私はテンプレート化されたメソッドで普通のクラスを作成しました。すべてのメソッドインスタンスは明示的にインライン化されています。明示的なクラスメンバーのインスタンス化
class MyClass
{
template<int N> inline void MyMethod();
template<> inline void MyMethod<1>() { cout << 1; }
template<> inline void MyMethod<2>() { cout << 2; }
};
のように私はそれをコンパイルする必要があり
template<>
構文を使用する必要がありました。私はクラス宣言の外のメソッドを明示的に定義したり、構文バリアントを使用したりするなど、他の解決策を試してみました。 (これは、以降のバージョンで試したことのない、VS2008の下で行われた。)私は2つの質問持って
:
- これはポータブルですが?
- 意味がありますか?
このようなテンプレートメソッドの特殊化(ヘッダーにはこれらの特殊化の適切な宣言が含まれている限り)をソースファイルに移すことができます。それは非特定のメソッドテンプレートではできませんが... –
それはなぜ、それは動作しますか? –
@YvesDaoust実際には(https://godbolt.org/g/yEBYVo)[仕事](https://godbolt.org/g/GzWrlo)はありません。多分あなたのコンパイラの拡張? – skypjack