Biorąc pod uwagę funkcje, takie jak:Jakie są dodatkowe obciążenia związane z wykonywaniem podwyższenia tożsamości :: leksykalny_krok?
template< typename T >
void function1(const T &t)
{
function2(boost::lexical_cast<std::string>(t));
}
Jakie napowietrznej powstaje wtedy, gdy typ przekazane function1
jest już std::string
?
Czy narzut jest różny, w zależności od typu Jestem lexical_cast
-ing na?
Czy pominięcie obsady jest zbyteczne, aby wykonać przeciążoną funkcję? Np .:
void function1(const std::string &t)
{
function2(t);
}
template< typename T >
void function1(const T &t)
{
function1(boost::lexical_cast<std::string>(t));
}
Wersja doładowania można dowiemy się z na odpowiedź, jak rozumiem, że lexical_cast
otrzymał kilka optymalizacji drugiej wersji.
Przede wszystkim, nie rób specjalizacja szablonu funkcji, * po prostu przeciążenie *. – Xeo
@Xeo Dobra uwaga [wyjaśnione tutaj] (http://stackoverflow.com/questions/7108033/template-specialization-vs-function-overloading). Edytowane. –