假设我有一个函数模板,其中类型参数仅用作返回类型:
template <typename T>
T foo()
{
return whatever;
}
那么特化该函数模板的正确语法是什么?以下两项似乎都有效:
template <>
std::string foo()
{
return whatever;
}
template <>
std::string foo<std::string>()
{
return whatever;
}
这两者有什么区别吗?如果不是,惯用的方法是什么?
最佳答案
编译器将根据提供的信息(此处为函数返回类型)推断出正确的模板特化。
所以这些语法具有完全相同的行为,一个比另一个更明确。
关于c++ - 在 C++ 中专门化函数模板的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957419/