6
テンプレートクラスからの単一メソッドのテンプレート特殊化
テンプレートクラスを含む次のヘッダーが少なくとも2つの.CPPファイルに含まれていることを常に考慮して、このコードは正しくコンパイルされます。 template <class T> class TClass { public: void doSomething(std::vector<T> * v); }; template <class T> void TClass<T>::doSomething(std::vector<T> * v) { // Do something with a vector of a generic T } template <> inline void TClass<int>::doSomething(std::vector<int> * v) { // Do something with a vector of int's } ただし、特殊化メソッドのインラインに注意してください。メソッドが複数回定義されているため、リンカエラー(VS2008ではLNK2005)を回避する必要があります。AFAIKの完全なテンプレート特殊化は単純なメソッド定義と同じであるため、私はこれを理解しています。 …