嵌套模板 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;
}
假设我有这个设置:
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;
}