我已經用模板化方法創建了一個普通類,並且所有方法實例都是顯式的和內聯的。顯式類成員實例化
像
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