【问题标题】:Why can't auto be return type of a function? [duplicate]为什么 auto 不能是函数的返回类型? [复制]
【发布时间】:2015-01-04 14:42:12
【问题描述】:

我的问题是,为什么不能推导出函数的返回类型? ,或者更简单地说,为什么下面的代码会出错:

auto myfunc(int a)
{
int a = 12;
return a;
}

为什么这无效?

【问题讨论】:

    标签: c++ c++11 auto


    【解决方案1】:

    这是 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

    【讨论】:

    • 只是一个精度:它不会即将推出,ISO/IEC 14882:2014(E) 于 2014 年 8 月发布,所有主要编译器都支持它的大部分功能一段时间。
    【解决方案2】:

    它在 C++14 中是允许的(称为自动返回类型推导),您现在可以在编译器中使用 std=c++1y 启用它。

    如果您的编译器支持 c++11 但不支持 c++14,则可以使用尾随返回类型:

    auto myfunc(int a) -> int
    {
    int b = a;
    return a;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 2011-05-18
      • 2013-03-22
      • 1970-01-01
      • 2015-11-14
      • 2012-03-14
      • 2017-08-28
      • 2020-06-05
      相关资源
      最近更新 更多