我有一个带有显式(即非推导)模板参数的函数对象,定义如下:
struct foo
{
template<class T>
T operator()() const
{
return 5;
}
};
foo bar = {};
当我尝试这样称呼它时:
int main()
{
int i = bar<int>();
return 0;
}
我得到一个编译错误。有没有办法像普通函数一样用模板参数调用函数对象?我真的需要把它作为一个函数对象。制作免费功能对我来说并不是一个真正的选择(或者至少,这是一个非常混乱的选择)。