Предположим, у меня есть шаблон функции, в котором параметр типа используется только в качестве возвращаемого типа:
template <typename T>
T foo()
{
return whatever;
}
Тогда каков правильный синтаксис, чтобы специализировать этот шаблон функции? Кажется, работают оба из следующих:
template <>
std::string foo()
{
return whatever;
}
template <>
std::string foo<std::string>()
{
return whatever;
}
Есть ли разница между ними? Если нет, то каков идиоматический способ?