考虑以下示例:
#include <iostream>
#include <string>
struct foo { std::string value; };
inline foo bar() { return { "42" }; }
std::string my_func() {
auto &x = bar();
^^^^^^^^^^^^^^^^
return x.value;
}
int main() {
std::cout << my_func() << std::endl;
}
错误:从“foo”类型的右值初始化“foo&”类型的非常量引用无效
然而,令我惊讶的是,它在 VC++2015 中编译并运行良好。
- 这是VC++2015的bug吗?
- 当语句呈现程序格式错误时,标准是否规定
auto
可以隐式添加const
对象?