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

C++ template types nested in a template class definition

本文关键字:C++ 类型 嵌套 定义      更新时间:2023-10-16

我有一种情况,其中有一个类定义如下所示:

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

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

我在编写Bravo的库中看到了同样的技术,Bravo是一个模板化的类。我是不是错过了什么?我已经彻底剥离了Alpha,并进行了测试,但没有成功编译。我还试图从Bravo库中看到的地方复制+粘贴代码,但同样的事情,没有成功,同样的错误。

提前谢谢。

您所拥有的是部分模板专用化;但是,任何模板专门化都需要一个模板来进行专门化,而是您没有的。

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

您需要首先声明一个主模板。你所写的是一门专业。

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