【发布时间】:2014-11-11 17:17:24
【问题描述】:
如何隐式调用类对象的模板化函数调用运算符?
class User_Type
{
public:
template< typename T > T operator()() const;
};
void function()
{
User_Type user_var;
int int_var_0 = user_var.operator()< int >(); // explicit function call operator; ugly.
int int_var_1 = user_var< int >(); // implicit function call operator.
}
g++-4.9 -Wall -Wextra的输出错误是:
error: expected primary-expression before ‘int’
auto int_var_1 = user_var< int >();
^
【问题讨论】:
-
如果您有“隐式转换”(正如您在评论中提到的),这有什么意义?
-
@DieterLücking 我想要一个符号作为“概念价值”,并且知道如何将自己表示为许多不同的类型。
-
@DieterLücking 想想
T val = 0的声明;这对任何基本类型都有效。我想提供一个对任何基本类型和用户扩展类型都有效的T val = foo。在我的例子中,foo是类Foo的命名空间静态实例。
标签: c++ templates function-call-operator