【发布时间】:2015-01-04 14:42:12
【问题描述】:
我的问题是,为什么不能推导出函数的返回类型? ,或者更简单地说,为什么下面的代码会出错:
auto myfunc(int a)
{
int a = 12;
return a;
}
为什么这无效?
【问题讨论】:
我的问题是,为什么不能推导出函数的返回类型? ,或者更简单地说,为什么下面的代码会出错:
auto myfunc(int a)
{
int a = 12;
return a;
}
为什么这无效?
【问题讨论】:
这是 C++14 中的一个特性,你可以在 GCC 4.9 或 clang 中通过设置 -std=c++1y 标志来尝试它。
实时示例:http://coliru.stacked-crooked.com/a/00b8b708d6f0f45b
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
【讨论】:
它在 C++14 中是允许的(称为自动返回类型推导),您现在可以在编译器中使用 std=c++1y 启用它。
如果您的编译器支持 c++11 但不支持 c++14,则可以使用尾随返回类型:
auto myfunc(int a) -> int
{
int b = a;
return a;
}
【讨论】: