向前声明模板别名

forward declare a template alias

本文关键字:别名 声明      更新时间:2023-10-16

我有一个别名模板,用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)>;