Определить несколько методов с параметрами из вариативных шаблонов

Я хочу определить базовый класс шаблона таким образом, чтобы он принимал переменные аргументы шаблона и определял виртуальный метод для каждого аргумента, где параметром является тип аргумента.

Baseдолжен дать мне 3 виртуальных метода: Foo(int), Foo(bool)и Foo(string ).

Я пробовал следующее:

template <typename Param>
struct BaseSingle
{
    virtual void Foo(Param) {};
};

template <typename... Params>
struct Base : public BaseSingle<Params>...
{
};

К сожалению, Foo становится неоднозначным. Я не могу заставить работать синтаксис с помощью BaseSingle::Foo... . Есть ли способ?

Я знаю, что в качестве альтернативы я могу рекурсивно наследоваться от BaseSingle и передать остальные параметры. Есть ли в этом последствия для производительности?

6
задан ildjarn 9 March 2012 в 20:15
поделиться