Расширение пакета параметров при использовании объявлений не поддерживается. в C++14, поэтому следующий код не компилируется:
template<typename T> struct A
{
virtual void foo(T);
};
template<typename... T> struct B: public A<T>...
{
using A<T>...;
};
Есть ли обходной путь для достижения тех же результатов? В противном случае пришлось бы вручную указывать объявление using для ожидаемых типов и изменять класс каждый раз, когда используется новый тип.
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