2

考虑下面的片段:

#include<tuple>

double refd = 5.0;
int refi = 1;
decltype(auto) foo(){return std::tuple<double&,int&>{refd,refi};}

auto&[d,i] = foo(); //msvc:pass, gcc:fail, clang:fail

在编译器资源管理器上可用

在 gcc/clang 的情况下,错误是:

错误:无法将类型的非常量左值引用绑定到类型'std::tuple<double&,int&>&'的右值'std::tuple<double&, int&>'

但是,MSVC 不会抱怨并且编译得很好。

哪一个是正确的?

4

0 回答 0