嵌套模板 using/typdef

Nested template using/typdef

假设我有这个设置:

template<typename T1>
struct A {
  template<typename T2>
  struct B {
    using type = int;
  };
};

我希望能够形成一个typdef/using:

template<typename T1,typename T2>
using type2 = A<T1>::B<T2>::type;
//... and use like
type2<int,char> foo;

GCC 抱怨我需要 typename A<T1>::B<T2>::type,然后又抱怨它需要“;” B 之后的“<”之前(即 typename A<T1>::B

有没有办法将 "using" 与嵌套模板一起使用?

切换
using type2 = A<T1>::B<T2>::type;

using type2 = typename A<T1>::template B<T2>::type;

请注意,B 是模板化的 class,而 type 包含在模板化的 class 中,因此请使用以下内容

#include <iostream>
template<typename T1>
struct A {
    template<typename T2>
    struct B {
        using type = int;
    };
};

template<typename T1,typename T2>
using type2 = typename A<T1>::template B<T2>::type;

int main()
{
    type2<int,char> foo =2;
    std::cout << foo;

}