9

我有一个别名模板,使用 using 指令定义:

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。

让它工作的语法是什么?

4

1 回答 1

13

不,这是不可能的。

您要做的是向前声明TC,然后T在其下方立即定义。

template<typename T, typename U>
struct TC;

template<typename A>
using T=TC<decltype(A::b),decltype(A::c)>;
于 2013-04-30T16:18:34.100 回答