我已经用模板化方法创建了一个普通类,并且所有方法实例都是显式的和内联的。显式类成员实例化
像
class MyClass
{
template<int N> inline void MyMethod();
template<> inline void MyMethod<1>() { cout << 1; }
template<> inline void MyMethod<2>() { cout << 2; }
};
我需要使用template<>
语法有它编译。我尝试了其他的解决方案,比如类声明之外的方法的显式定义,以及语法变体,都无济于事。 (这是VS2008下进行,而不是试图在以后的版本。)
我有两个问题:
- 是这种便携式?
- 它有道理吗?
值得注意的是,可以将这些模板方法的特化的实现(只要标题包含这些特化的适当声明)移动到源文件。虽然它不能用未被专门化的方法模板来完成...... –
为什么它能够工作呢? –
@ YvesDaoust其实它[不](https://godbolt.org/g/yEBYVo)[工作](https://godbolt.org/g/GzWrlo)。也许你的编译器的扩展? – skypjack