我对以下元组业务感到有些困惑:
int testint = 1;
float testfloat = .1f;
std::tie( testint, testfloat ) = std::make_tuple( testint, testfloat );
std::tuple<int&, float&> test = std::make_tuple( testint, testfloat );
有了std::tie
它就可以了,但是直接分配给引用的元组不会编译,给出
“错误:从 'std::tuple<int, float>' 转换为非标量类型 'std::tuple<int&, float&>' 请求”
或者
“没有合适的用户定义从 std::tuple<int, float> 到 std::tuple<int&, float&> 的转换”
为什么?我仔细检查了编译器是否真的与通过执行此操作分配给的类型相同:
static_assert( std::is_same<decltype( std::tie( testint, testfloat ) ), std::tuple<int&, float&>>::value, "??" );
评估为真。
我也上网查了一下是不是msvc的问题,但是所有编译器的结果都是一样的。