c++ - C++ 中的成员函数模板和重载 operator()

标签 c++ templates operator-overloading

以下代码片段适用于我:

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/

相关文章:

c++ - 基于基类方法的生成类中的运算符重载

c++ - 如何使用运算符重载添加类变量和 int 变量?

operator-overloading - 在 Fortran 重载赋值中检查自赋值

c++ - CRTP:确定基类函数中的派生类类型以允许代码重用

c++ - 我如何构建默认使用我自己构建的 libc++ 的 clang?

c++ - 在具有容量/调整大小的类中初始化 vector

c++ - 如果我们使用 SFINAE 匹配类型,则完全失败

php - 动态模板css(模板框架)的mysql结构

android - 如何将 C++ 中的 wchar wstring 转换为更好支持的东西?

javascript - jquery-tmpl - 模板功能不起作用