Предположим, у меня есть шаблон функции:
template <typename T>
std::string foo(const T& x)
{
return some_computation_involving(x);
}
Если x
уже является строкой, я просто хочу передать ее дословно.Должен ли я специализировать шаблон функции?
template <>
std::string foo(const std::string& x)
{
return x;
}
Или я должен предоставить функцию без шаблона?
std::string foo(const std::string& x)
{
return x;
}
При каких обстоятельствах я должен выбрать, какой вариант и какие подводные камни янужно знать?