有人已经问过这个问题,但是线程结束时原始问题没有得到解答。模板化运算符()重载C++
假设你有这样的:
template<size_t i, class f_type>
void call_with_i(f_type f);
functor_type可以是:
一)与具有以下签名的方法的结构:
template<size_t i> operator()() const;
或b)一个看起来像这样的功能:
template<size_t i> foo();
我想“call_with_i < 42>(富)”等效于“富< 42>()”,但我不能找出正确的语法来做到这一点。 (a)
,但(a)+(b)会很好
。我已经尝试过这些语法:
f<i>(); // doesn't work
f()<i>; // doesn't work
f.operator<i>(); // doesn't work
f.operator()<i>; // doesn't work
f.operator()<i>(); // works on msvc, but doesn't work on gcc.
你如何调用operator()的显式模板参数?
有没有办法以相同的语法也会调用模板化的自由函数的方式来调用它?
p.s.如果你想知道我在用什么,这是因为我正在写一个函数repeat_to,其中repeat_to调用f(0)然后调用f(1)... f(10)。我使用它通过索引并行地遍历多个boost :: fusion向量。是的,我可以使用迭代器,或者我可以使用一个命名成员函数,但我仍然想知道答案。
编辑说明:我剔除了东西,因为传递一个模板化的自由函数作为参数并没有任何意义。
它没有得到回答,因为你不能。 – GManNickG 2009-11-19 09:46:31