嵌套在模板类定义中的C ++模板类型

时间:2011-06-14 18:53:28

标签: c++ template-meta-programming

我的情况是有一个类定义,如下所示:

template<class T>
class Alpha< Bravo<T> >
{
....
};

我正在使用gnu g ++进行编译,编译器抱怨Alpha是“不是模板”。

我已经看到了在Bravo编写的库中使用的相同技术,而Bravo是一个模板化的类。我错过了什么吗?我已经将Alpha剥离到骨头并完成测试,没有编译成功。我也尝试从我在Bravo的库中看到的地方复制+粘贴代码,同样的事情,没有成功,同样的错误。

提前致谢。

2 个答案:

答案 0 :(得分:6)

你有什么部分模板专业化;但是,任何模板专业化都需要主要模板来专门化, 你没有。

template<class T>
class Alpha;

template<class T>
class Alpha<Bravo<T> >
{
    // ...
};

答案 1 :(得分:4)

您需要先声明主模板。你写的是专业。

//primary template - the definition is optional
template<class T>
class Alpha
{
};

//specialization
template<class T>
class Alpha< Bravo<T> >
{
};