テンプレートメソッドを含むテンプレートクラスがあり、2つのテンプレートパラメーターTとUを指定しています。この操作は非常にコストがかかり、プロファイリングでCPU時間の主な用途として表示されます。私はそれをいくらか最適化することができましたが、T == U(これはかなり一般的です)の場合に限りますが、これを行うための構文はわかりません...
問題のクラスとメソッドは次のようになります。
template<typename T>class Foo
{
public:
...
template<typename U>U bar()const;
};
Foo :: barは通常、他のテンプレートコードから呼び出されるため、別のメソッド( "T fastBar()const"など)を作成したとしても、他のテンプレートコードで可能な場合はそのバージョンを呼び出す方法がわかりません。 ..。。
T == Uの明示的な特殊化を作成しようとしましたが、VC9でエラーが発生しました
template<typename T>template<>T Foo<T>::bar<T>()const
エラーC2768:'Foo :: bar':明示的なテンプレート引数の不正使用