次のコードがあります。
// string specializations
void foo(const char *a, const char *b);
void foo(const char *a, const std::string &b);
void foo(const std::string &a, const char *b);
void foo(const std::string &a, const std::string &b);
// generic implementation
template<typename TA, typename TB>
void foo(TA a, TA b)
{...}
問題は、このテスト ケース:
char test[] = "test";
foo("test", test);
のテンプレート化されたバージョンを呼び出すことになりfoo
ます。明らかに、非パラメーターのさまざまな組み合わせでいくつかのオーバーロードを追加することもできconst
ますが、知りたいのは、文字列のすべておよび非ペアリングにfoo
特化するようにオーバーロードするより良い方法はありますか? 引数の型の順列を見逃していないことを期待する必要がないものはありますか?const
const