我有一个别名模板,使用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。
使这个工作的语法是什么?
答案 0 :(得分:12)
不,这是不可能的。
您要做的是转发声明TC
,然后在其下方定义T
。
template<typename T, typename U>
struct TC;
template<typename A>
using T=TC<decltype(A::b),decltype(A::c)>;