我不确定如何提出这个问题,因为我对模板使用的了解很浅,但这里什么也没有。
我有一个类,我想为所有数值提供一个函数模板,然后这个函数模板调用需要 std::string 的非模板版本,如下所示。
template< class T > void
add_to_header( const std::string &key, const T &val )
{
add_to_header( key, std::to_string( val ) );
}
virtual void
add_to_header( const header& header );
virtual void
add_to_header( const std::string &key, const std::string &val );
这段代码可以干净地编译,但我无法使用const char []进行调用。
instance.add_to_header( "Example1", 4 ); // successful
instance.add_to_header( "Example2", std::string( "str val" ) ); // successful
instance.add_to_header( "Example3", "Not fun" ); // error - none of the 9 overloads could convert all the argument types
解决这个问题的惯用方法是什么?