Mon*_*dji 1 c++ static templates inline specialization
我的模板有语法错误
我想部分专门化我的模板类的静态函数
template <typename Foo, size_t bar = 26>
class MyClass
{
MyClass();
static void function();
};
#include "class.tpp"
Run Code Online (Sandbox Code Playgroud)
template <typename Foo, bar>
MyClass<Foo, bar>::MyClass()
{ }
template <typename Foo>
inline
void
MyClass<Foo, 6>::function()
{
// ...
}
template <typename Foo>
inline
void
MyClass<Foo, 26>::function()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
error: template definition of non-template
我只想实现MyClass<Foo, bar>::functionbar == 26和bar == 6
怎么做得好?谢谢
该函数本身不是模板,它只在一个类模板中.您可以为这些案例专门化类,但不能将函数本身专门化.
template <class Foo>
class MyClass<Foo, 26>
{
static void function() { ... }
};
Run Code Online (Sandbox Code Playgroud)
如果你有这样的专门类,你只能在类中声明函数,并在外部定义它,如下所示:
template <class Foo>
void MyClass<Foo, 26>::function() { ... }
Run Code Online (Sandbox Code Playgroud)
如果您事先没有专门化它,那么使用不完整类型会出现编译错误.
您可能还会发现此问题和答案,专门针对相关类模板中的单个函数.