标签: 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中,ref1和ref2都是左值引用。有人可以向我解释哪些行为(以及为什么)是正确的?无论哪个选项是正确的,似乎我提到的至少一个编译器都有错误。
ref1
int&&
ref2
int&