const 在具有尾随返回类型的自动退货声明中是什么意思
What does const means in auto return declaration with trailing return type?
我需要从函数返回一个常量引用。此代码执行以下操作:
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
在具有自动尾随返回的函数返回类型中是什么意思?或者也许它被丢弃了?
auto const test()->add_lvalue_reference<int>::type
这是格式不正确的,请参见 [dcl.fct]/2(在使用尾随返回类型的情况下,"T
应是单一类型说明符auto
"(。
相关文章:
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- C++ [错误] 声明'char '隐藏参数。什么意思?
- C++中这个声明的向量是什么意思
- 在C++中,变量声明左侧的大括号是什么意思?
- 引用 using 声明引入的功能的句子是什么意思?
- 这个嵌套结构声明是什么意思?
- 类名(声明)后的双冒号 - 这是什么意思
- const 在具有尾随返回类型的自动退货声明中是什么意思
- 变量声明中结构的作用域解析是什么意思
- 这个声明"int(*ptr[3])();"是什么意思?
- 成员函数声明的参数列表后面的单个"与"是什么意思
- 向量对象声明后的括号是什么意思
- 声明 lambda 时<: 和 :> 是什么意思?
- c++ 声明中的 ::type 是什么意思
- 结构声明中的":"是什么意思
- C++:声明'TYPE& name(&TYPE);'是什么意思?
- C++/CLI 中的声明“String^ strtests”是什么意思
- 尝试转发声明时"->"是什么意思?
- 这个 c++ 类声明是什么意思