以下代码片段适用于我:
class Foo {
public:
template <class T> T& get () { ... }
};
Foo foo;
foo.get<int>() = ...;
但是,以下代码片段对我不起作用:
class Foo {
public:
template <class T> T& operator() () { ... }
};
Foo foo;
foo<int>() = ...;
错误是:
expected primary-expression before '>' token
expected primary expression before ')' token
这两个错误都涉及 foo<int>()
为什么这不起作用,是否可以解决这个问题?
最佳答案
如果需要显式指定模板参数,则需要使用operator
语法:
foo.operator()<int>()
没有任何方法可以使用函数调用语法指定参数。如果您不能从函数的参数中推导出模板参数,最好使用成员函数而不是运算符重载。
关于c++ - C++ 中的成员函数模板和重载 operator(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585928/