2013-04-30 7 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