我需要从函数返回一个const引用。这段代码完成了这件事:
auto test()->add_lvalue_reference<const int>::type
{
static int i{50};
return i;
}
int & i{test()}; // doesn't compile
但是这个看起来非常相似的片段给出了错误的结果:
auto const test()->add_lvalue_reference<int>::type
{
static int i{50};
return i;
}
int & i{test()}; // compiles thougth test() returned a const
我将关键字const
从类型声明移到了返回声明。
起初,我想,扣除后,功能签名变成了第二种情况:
int & const test(); // not valid - const qualifiers cannot be applied to int&
这不是有效的c ++。但是使用auto
说明符进行编译。
所以我的问题是const
在具有自动尾随返回的函数返回类型中的含义是什么?或者它可能被丢弃了?
答案 0 :(得分:5)
auto const test()->add_lvalue_reference<int>::type
这是不正确的,请参阅[dcl.fct]/2(在使用尾随返回类型的情况下,&#34; T
应为单个< em> type-specifier auto
&#34;)。