C ++ 17中带有ref限定符的结构化绑定的差异编译器输出

时间:2019-05-22 21:23:19

标签: c++ language-lawyer c++17 structured-bindings

请考虑以下代码段:

#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

compiler explorer上可用

对于gcc / clang,错误是:

  

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

但是,MSVC不会抱怨并且可以正常编译。

哪个是正确的?

0 个答案:

没有答案