是否是rvalue数组的元素(该元素是使用下标表达式获得的)rvalue?

时间:2017-10-14 18:02:56

标签: c++ arrays rvalue

考虑这段代码:

int a[]{0};
auto&& ref1 = std::move(a)[0];
auto&& ref2 = a[0];

如果我正确理解C ++标准(C ++ 17),ref1的类型为int&&,而ref2的类型为int&,那就是它在clang中起作用的方式。但是,在gcc和msvc中,ref1ref2都是左值引用。
有人可以向我解释哪些行为(以及为什么)是正确的?无论哪个选项是正确的,似乎我提到的至少一个编译器都有错误。

0 个答案:

没有答案