タグ付けされた質問 「specialization」

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の完全なテンプレート特殊化は単純なメソッド定義と同じであるため、私はこれを理解しています。 …

2
テンプレートクラスメンバー関数の明示的な特殊化
あるタイプ(たとえばdouble)のテンプレートメンバー関数を特殊化する必要があります。クラスX自体がテンプレートクラスではない場合は正常に機能しますが、テンプレートにすると、GCCがコンパイル時エラーを出し始めます。 #include <iostream> #include <cmath> template <class C> class X { public: template <class T> void get_as(); }; template <class C> void X<C>::get_as<double>() { } int main() { X<int> x; x.get_as(); } これがエラーメッセージです source.cpp:11:27: error: template-id 'get_as<double>' in declaration of primary template source.cpp:11:6: error: prototype for 'void X<C>::get_as()' does not …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.