我正在尝试获取T2<B>
从 C 实例开始的模板别名。
template<typename A>
struct T1
{
template<typename B>
struct T2{};
};
template<typename A>
class C
{
T1<A> t;
};
template<typename A>
using U1=decltype(C<A>::t);
template<typename A, typename B>
using U2=typename U1<A>::T2<B>;
使用 gcc 4.8 时出现编译器故障:
gg.cc:18:28: error: expected ‘;’ before ‘<’ token
using U2=typename U1<A>::T2<B>;
我在每个合理的位置都使用了 typename 关键字,但无法编译 U2 定义。
这里的正确语法是什么?如果我能在不求助于 U1 的情况下得到 U2 的定义,那就更好了。