C++11 中 auto 关键字的编译错误

Compilation error in auto keyword in C++11

我知道使用auto关键字可以自动从右值推导出变量的类型。那为什么我的代码中下面的函数片段会出现编译错误呢?

auto getName(auto str = "John Doe") {
    return str;
}

函数原型中不允许'auto'编译错误。我用谷歌搜索了一下,我认为 auto 不能用于函数原型。为什么会这样?

您可以在 lambda 表达式中使用 auto,但不能在普通函数中使用。

要获得相同的效果,您可以定义一个函数模板:

template <class T>
T getname(T input = "John Doe") {
    return input;
}

但请注意,该参数的默认值仅适用于实际上可以从字符串文字初始化的类型。

哦,顺便说一句,以str开头的名称是保留的,所以最好使用其他名称。