c++ - 在 C++ 中专门化函数模板的语法

标签 c++ templates function return-value template-specialization

假设我有一个函数模板,其中类型参数仅用作返回类型:

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/

相关文章:

c++ - 为什么我们不能使函数显式化?

c++ - 调用函数时实际发生的情况

Swift 2.2 单播放/暂停 UIButton

c# - EntityFramework 存储库模板 - 如何在模板类中编写 GetByID lambda?

c++ - 将函数应用于元组中的每个元素,将每个元素转换为类型包中的不同类型,然后作为参数包传递

c++ - 通过模板多重继承

r - 传递 `chr` 类型参数并更新嵌套函数的内容以在 R 中返回?

c++ - 错误 : Class computer comp is already defined in computer. 对象

c++ - codelite 自动完成不(真的)工作

c++ - 如何忽略 gcov 输出中的头文件?