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