我有以下代码:
// 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
字符串配对?一个不需要我希望我没有错过一些参数类型的排列?