Есть ли обходной путь для расширения пакета параметров при использовании объявлений [дубликаты]

Расширение пакета параметров при использовании объявлений не поддерживается. в C++14, поэтому следующий код не компилируется:

template<typename T>    struct A 
{
    virtual void foo(T);
};

template<typename... T>    struct B: public A<T>...
{
    using A<T>...;
};

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


person Jens    schedule 22.12.2015    source источник
comment
Вы можете обернуть A<T> в класс, который предоставляет бесплатную (другую) функцию для вызова foo, например. template<class T> struct wrapper : A<T> { friend void bar(T t) { this->foo(t); } }; затем template<class... T> struct B : wrapper<T>... { template<class X> void foo(X x) { bar(x); } };   -  person dyp    schedule 22.12.2015
comment
stackoverflow.com/questions/27183568/   -  person Columbo    schedule 22.12.2015
comment
@dyp У меня возникает соблазн самому написать бумагу, но кто-то несет ответственность... : /   -  person Columbo    schedule 22.12.2015
comment
@Columbo Почему бы не связаться с Вандерворде и не спросить, можете ли вы помочь.   -  person dyp    schedule 22.12.2015