forward声明模板别名

mir*_*irk 9 c++ templates typedef c++11

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

template<typename A>
using T=TC<decltype(A::b),decltype(A::c)>;
Run Code Online (Sandbox Code Playgroud)

C++ 11是否提供了一种转发声明此模板别名的机制T

我试过了:

template<typename> struct T;
Run Code Online (Sandbox Code Playgroud)

和:

template<typename>
using T;
Run Code Online (Sandbox Code Playgroud)

但两者都返回编译器错误("与先前的声明冲突").我使用的是gcc 4.8.

使这个工作的语法是什么?

Pub*_*bby 12

不,这是不可能的.

你想要做的是前向声明TC,然后T在它下面定义.

template<typename T, typename U>
struct TC;

template<typename A>
using T=TC<decltype(A::b),decltype(A::c)>;
Run Code Online (Sandbox Code Playgroud)