【发布时间】:2012-09-11 19:13:36
【问题描述】:
给定一个函数,例如:
template< typename T >
void function1( const T &t )
{
function2( boost::lexical_cast<std::string>(t) );
}
如果传递给function1 的类型已经是std::string,会产生什么样的开销?
开销是否因我 lexical_cast-ing 的类型而异?
创建一个重载函数来绕过强制转换是多余的吗?例如:
void function1( const std::string &t )
{
function2( t );
}
template< typename T >
void function1( const T &t )
{
function1( boost::lexical_cast<std::string>(t) );
}
boost 的版本可能与您的回答有关,据我了解,lexical_cast 已在各个版本中进行了一些优化。
【问题讨论】:
-
首先,不要做函数模板特化,只是重载。
-
@Xeo 好点explained here。已编辑。
标签: c++ boost lexical-cast