我有一个带有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。 如何修改语法以使其正常工作?
不,这是不可能的。你想要做的是提前声明 TC,然后在其下面立即定义 T。template<typename T, typename U> struct TC; template<typename A> using T=TC<decltype(A::b),decltype(A::c)>;