使用自动使用新的C++ 11语法但使用auto&without - >的函数声明

mam*_*ami 2 c++ function-declaration auto return-type-deduction c++14

考虑下面的函数定义:

auto& Fnc1() { return someNonLocalVariable; }
Run Code Online (Sandbox Code Playgroud)

在这种情况下, - >未明确指定返回类型.但是有&after auto关键字.这是否保证返回引用而不是变量的副本?这是支持的语言功能(返回参考)吗?使用VS 2017,它可以按照我的预期工作:返回参考.但我找不到任何在线资源来验证.

rsj*_*ffe 6

是的,这是正确的规范,正如Ron评论的那样,在C++ 14中开始运作.C++ 11确实需要尾随返回类型语法(->在参数之后).

有关更多信息,请参阅cppreference.

在不使用尾随返回类型语法的函数声明中,关键字auto指示将使用模板参数推导的规则从其return语句的操作数推导出返回类型.

另请参阅自动类型推导,其中包含使用示例auto&.您可以将此视为使用auto关键字声明变量的相同规则集.