模板专业化的模板参数?
您好,我有一个模板类的静态成员,我想为模板化的子组定义它,即:
template <typename T>
class FooT
{
private:
static int ms_id;
};
template <typename T>
class Foo {};
template<> template<typename T> int FooT< template Foo<T> >::ms_id = 10;
下引发以下错误
遗憾的是,这会在 gcc 4.1.1 D:\X\Foo.h(98) :错误:模板参数 1 在以下行中无效
:template>>;模板<类型名称 T> int FooT<模板 Foo
我做错了什么是首先允许的一般概念?
Hi I've got a static member of a templated class that I want defined for a sub group of classes that are templated ie:
template <typename T>
class FooT
{
private:
static int ms_id;
};
template <typename T>
class Foo {};
template<> template<typename T> int FooT< template Foo<T> >::ms_id = 10;
Sadly this throws the following error under gcc 4.1.1
D:\X\Foo.h(98) : error: template argument 1 is invalid
on the line: template<> template<typename T> int FooT< template Foo<T> >::ms_id = 10;
What am I doing wrong is the general concept allowed in the first place?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过部分专门化“初始化程序模板”来做到这一点:
You can do this by partially specializing an "initializer template":
当然,您无法将模板类作为模板实例中的增强。您需要放置一个“具体”类。
例如,使用 int:
或
Surely you are not able to put template class as augument in a template instanciation. You need to put a "concrete" class.
For instance , with int:
or