は、私は関数テンプレートがあるとします。私は特化したり、過負荷にするべきですか?
template <typename T>
std::string foo(const T& x)
{
return some_computation_involving(x);
}
x
がすでに文字列である場合、私はちょうどそのまま戻ってそれを渡したいです。私は関数テンプレートを特化すべきですか?
template <>
std::string foo(const std::string& x)
{
return x;
}
また、テンプレート以外の機能を用意する必要がありますか?
どのような状況で、私はどのようなオプションを選択すればいいですか、私は注意すべき落とし穴は何ですか?
私は過負荷が専門の切り札と無視するよう回避するために重要な落とし穴が専門と過負荷の両方をしていると信じています。 – AJG85
あなたはfoo(arg)のようなメソッドを呼び出さないでしょうか?その場合、たとえそれが文字列であることがわかっていれば、メソッドを呼び出すのはなぜですか? –
@Sriram:一般的ではありません。テンプレートパラメータは引数から推論できます。さらに、テンプレート化された関数からルーチンを呼び出すことを検討してください。 'foo(arg)'は文字列を渡すかもしれません。 –