値とconst 参照によって パラメーターを受け取ることができる任意のテンプレート メソッドがあるとします(明らかに、自明な型とそれに応じたオブジェクトの場合)。
テンプレート関数のプロトタイプを作成するとき、この状況はどのように処理されますか?
私は次のようなものを作ることができます:
template <typename T> void Foo(T value) {
// Do something.
}
template <typename T> void Foo(const T& value) {
// Do something, yeah.
}
// Specialization for first prototype.
template <> void Foo<int>(int value) { }
// Specialization for second prototype.
template <> void Foo<Object>(const Object& value) { }
ただし、このアプローチは、他の呼び出しのラッパーとして純粋に機能する単純な関数に対してのみ有効です。
関数(テンプレート化されていないバージョン)に多くのコードが含まれている場合、コードを 2 回コピーする必要があります。
ここでもっとスマートにできますか?