2013-04-30 63 views
7

我有一個別名模板,與使用指令定義:向前聲明模板別名

template<typename A> 
using T=TC<decltype(A::b),decltype(A::c)>; 

請問C++ 11提供了一種機制來轉發聲明此模板別名T

我想:

template<typename> struct T; 

和:

template<typename> 
using T; 

但都返回編譯器錯誤( 「與以前的聲明衝突」)。我正在使用gcc 4.8。

讓這個工作起作用的語法是什麼?

回答

9

不,這是不可能的。

你想要做的就是轉發聲明TC,然後在其下面定義T

template<typename T, typename U> 
struct TC; 

template<typename A> 
using T=TC<decltype(A::b),decltype(A::c)>; 
+0

這就是我所害怕的。我會再次提出這個問題,希望得到另一個答案,並且之後可能會接受這個答案。 – mirk 2013-04-30 16:20:21