Я следующий шаблонШаблон псевдоним для класса члена шаблона
template<class F>
struct A{
template<int N>
struct B{
using type = int;
};
};
Я хотел бы сделать шаблон псевдоним, однако:
//doesn't compile.
template<class F, int N >
using alias_A = typename A<F>::B<N>::type;
GCC:
question.cpp:12:36: error: expected ';' before '::' token
using alias_A = typename A<F>::B<N>::type;
^
question.cpp:12:36: error: 'type' in namespace '::' does not name a type
При отладке я найти:
//does compile
struct C{};
using alias_B = typename A<C>::B<0>::type;
Может кто-нибудь указать, что я делаю неправильно? Я чувствую, что мне не хватает чего-то очевидного.
Позднее примечание: Кланг дает более полезное ключевое слово 'error: use 'template, чтобы лечить' B 'в качестве зависимого имени шаблона' ([ссылка] (http://coliru.stacked-crooked.com/a/1c8d3c351c8c6724)) –