我试图获得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的定义,那将会更好。
我以前只在成员模板函数中看到过这个。谢谢,我从来没有发现过我自己的。 – mirk 2013-05-01 10:13:41
@mirk:很高兴帮助。我在SO上添加了一个有用的Q&A的链接,详细解释如下。 – 2013-05-01 10:15:30