我已经用C++进行了很长时间的编码,最近遇到了对对的绑定。请有人解释一下为什么下面的代码不能工作,或者建议一个等价的替换?
pair<int,pair<int,int>> x = {10,{3,5}};
int w, u, v;
tie(w,tie(u,v)) = x;我可以用这个绕开它
w = x.ff;
tie(u,v) = x.ss;只是感觉不太好。非常感谢
发布于 2022-03-20 14:37:16
因为std::tie接受lvalue引用,而且由于嵌套std::tie返回元组的prvalue,所以不能将rvalue绑定到lvalue引用。
尝尝这个
std::pair<int,std::pair<int,int>> x = {10,{3,5}};
int w, u, v;
auto t = std::tie(u,v);
std::tie(w, t) = x;发布于 2022-03-20 14:46:17
我认为这可能是因为我们只能在中将lvalue写成参数。有关更多信息,您可以查看:http://www.cplusplus.com/reference/tuple/tie/
发布于 2022-03-21 12:03:26
正如在这篇文章(我们是否可以使用c++1y std:: tie () -like函数进行深度绑定?)中提到的,我可以这样做:
forward_as_tuple(w,tie(u,v)) = x;https://stackoverflow.com/questions/71547678
复制相似问题