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
开头的名称是保留的,所以最好使用其他名称。
我知道使用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
开头的名称是保留的,所以最好使用其他名称。