我試圖獲得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