eine Funktion wie Gegeben:Welchen Overhead gibt es bei der Durchführung eines Identity Boost :: lexical_cast?
template< typename T >
void function1(const T &t)
{
function2(boost::lexical_cast<std::string>(t));
}
Welche Art von Overhead entstehen, wenn der Typ function1
geben wird, ist bereits ein std::string
?
Ändert sich der Overhead, je nach Typ ich bin lexical_cast
-ing zu?
Ist es überflüssig, eine überladene Funktion zu machen, um den Cast zu umgehen? Z.B .:
void function1(const std::string &t)
{
function2(t);
}
template< typename T >
void function1(const T &t)
{
function1(boost::lexical_cast<std::string>(t));
}
Die Version von Boost kann auf Ihre Antwort relevent werden, wie ich sie verstehe, dass lexical_cast
einige Optimierungen für Revisionen erhalten hat.
In erster Linie nicht machen eine Funktion Template-Spezialisierung, * nur überladen *. – Xeo
@Xeo Guten Punkt [hier erklärt] (http://stackoverflow.com/questions/7108033/template-specialization-vs-function-overloading). Bearbeitet. –