const 在带有尾随 return 类型的 auto return 声明中意味着什么?
What does const means in auto return declaration with trailing return type?
我需要 return 来自函数的 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
从类型声明移到了 return 声明。
一开始我以为,推导后函数签名变成了第二种情况:
int & const test(); // not valid - const qualifiers cannot be applied to int&
这不是有效的 C++。但是使用 auto
说明符编译。
所以我的问题是 const
在带有自动尾随 return 的函数 return 中是什么意思?或者它可能被丢弃了?
auto const test()->add_lvalue_reference<int>::type
这是错误的格式,参见 [dcl.fct]/2(在使用 尾随-return-类型 的情况下,“T
应为单个 类型说明符 auto
").
我需要 return 来自函数的 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
从类型声明移到了 return 声明。
一开始我以为,推导后函数签名变成了第二种情况:
int & const test(); // not valid - const qualifiers cannot be applied to int&
这不是有效的 C++。但是使用 auto
说明符编译。
所以我的问题是 const
在带有自动尾随 return 的函数 return 中是什么意思?或者它可能被丢弃了?
auto const test()->add_lvalue_reference<int>::type
这是错误的格式,参见 [dcl.fct]/2(在使用 尾随-return-类型 的情况下,“T
应为单个 类型说明符 auto
").