Использование шаблона переменной в качестве параметра для класса и метода

Мой вопрос о следующем фрагменте кода:

    template <class...T>
class A
{
public:
template <class...S>
static void a() { }
};

template <class...T>
class B
{
public:
template <class...S>
void b()
{
A<T...>::a<S...>();
}
};

int main(int argc, char** argv)
{
return 0;
}

У меня есть класс A имеет шаблон с переменным значением и содержит статический метод a у этого есть другой шаблон variadic. Откуда-то еще (класс B в данном случае) у меня есть два разных набора шаблонов вариаальных выражений, которые я хочу передать A::a,

Компилятор (GCC 4.8.1) выдает следующее сообщение об ошибке:

    main.cpp: In static member function ‘static void B<T>::b()’:
main.cpp:16:22: error: expected primary-expression before ‘...’ token
A <T...>::a<S...>();
^
main.cpp:16:22: error: expected ‘;’ before ‘...’ token

Также обратите внимание, что когда я меняю метод b() к этому:

        void b()
{
A<int, char, short>::a<S...>();
}

или какая-то другая спецификация шаблонов А, тогда код компилируется просто отлично.

Что не так с приведенным выше кодом?

4

Решение

добавить шаблон здесь

A<T...>::template a<S...>();

см комментарий для причины. Кроме того, это прекрасно компилируется на VC ++ без ключевого слова, так что я думаю, что это зависит от компилятора.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]