Я пытаюсь определить рекурсивную конструкцию, такую как ферма задач. Здесь я пытаюсь использовать два операнда, которые рекурсивно могут работать для любого количества операндов, поскольку он может сам встраиваться.
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-компилятором.
Спасибо!