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

问题描述

| 我有一个类定义如下所示的情况:
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> >
{
};