我正在尝试定义一个像任务农场一样的递归结构。在这里,我正在尝试两个操作数,它们可以递归地工作于任意数量的操作数,因为它可以嵌套自己。
template <typename T1, typename T2>
class Farm
{
private:
T1 *task1;
T2 *task2;
public:
// save them so that I can use them when invoking call operator
Farm(T1 *_t1, T2 *_t2): task1(_t1), task2(_t2) { }
void operator()()
{
// invoke call operator, meaning a farm could be a task (arbitrary nesting)
(*task1)();
(*task2)();
}
};
int main()
{
... create two pointer(A *a, B *b...)
Farm(a,b); // error: missing template arguments before ‘(’ token
Farm<A, B>(a,b); // in this works, it works
}
问题在于模板参数的自动检测,在这种情况下不起作用。我做错了什么,我怎样才能实现这个模板参数的隐式检测,通过gcc编译器。
谢谢!
https://stackoverflow.com/questions/6359592
复制相似问题