为什么 auto 不能是 return 类型的函数?
Why can't auto be return type of a function?
我的问题是,为什么不能推导出 return 类型的函数? ,或者更简单地说,为什么以下代码会出错:
auto myfunc(int a)
{
int a = 12;
return a;
}
为什么这无效?
它在 C++14 中是允许的(并且称为自动 return 类型推导),您现在可以在您的编译器中使用 std=c++1y
启用它。
如果您的编译器支持 c++11 但不支持 c++14,您可以使用尾随 return 类型:
auto myfunc(int a) -> int
{
int b = a;
return a;
}
它是 C++14 中的一个特性,您可以通过设置 -std=c++1y 标志在 GCC 4.9 或 clang 中尝试它。
实例:http://coliru.stacked-crooked.com/a/00b8b708d6f0f45b
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
我的问题是,为什么不能推导出 return 类型的函数? ,或者更简单地说,为什么以下代码会出错:
auto myfunc(int a)
{
int a = 12;
return a;
}
为什么这无效?
它在 C++14 中是允许的(并且称为自动 return 类型推导),您现在可以在您的编译器中使用 std=c++1y
启用它。
如果您的编译器支持 c++11 但不支持 c++14,您可以使用尾随 return 类型:
auto myfunc(int a) -> int
{
int b = a;
return a;
}
它是 C++14 中的一个特性,您可以通过设置 -std=c++1y 标志在 GCC 4.9 或 clang 中尝试它。
实例:http://coliru.stacked-crooked.com/a/00b8b708d6f0f45b
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html