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

3
我有一个情况,其中有一个类定义看起来像这样:
template<class T>
class Alpha< Bravo<T> >
{
....
};

我正在使用gnu g ++编译,但编译器抱怨Alpha“不是一个模板”。我在Bravo库中看到了使用相同技术的情况,而Bravo是一个带有模板的类。我错过了什么吗?我已经将Alpha削减到最简,并进行了测试,但没有编译成功。我还尝试从我在Bravo库中看到这个工作的地方复制+粘贴代码,但同样的事情,没有成功,同样的错误。先谢谢。

您应该接受下面的答案,如果您喜欢的话...从列表视图中标记问题已回答。 :) - Mark McKenna
2个回答

6

您所看到的是部分模板特化;然而,任何模板特化都需要一个主模板进行特化,而您并没有这个主模板。

template<class T>
class Alpha;

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

太棒了,像冠军一样!使用前向声明也更有意义。我被语法搞糊涂了。谢谢! - ct_

4
你需要先声明一个主模板。你所写的是特化模板。
//primary template - the definition is optional
template<class T>
class Alpha
{
};

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接