std::tuple<double,double> dummy() {
return {2.0, 3.0};
}
int main() {
std::tuple<double,double> a = dummy();
return 0;
}
Error: 第22行:从初始化列表转换为“std::tuple”将使用显式构造函数“constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = double; _U2 = double; = void; _T1 = double; _T2 = double]”
注意: GCC(libstdc++)(以及clang(libc ++))接受该语法。
std::tuple<double,double> dummy {1.0, 2.0};
这不是同一种情况吗?
更新:这是libc++的扩展,请参见http://llvm.org/bugs/show_bug.cgi?id=15299和Howard Hinnant下面的回答。