【发布时间】:2017-08-25 21:46:39
【问题描述】:
我需要从函数返回一个 const 引用。这段代码做的事情:
auto test()->add_lvalue_reference<const int>::type
{
static int i{50};
return i;
}
int & i{test()}; // doesn't compile
但是这个看起来非常相似的 sn-p 给出了错误的结果:
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 在具有自动尾随返回的函数返回类型中是什么意思?或者它可能被丢弃了?
【问题讨论】:
-
恭喜,您发现了编译器错误。
标签: c++ c++11 auto trailing-return-type