首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归std::C++中的tie

递归std::C++中的tie
EN

Stack Overflow用户
提问于 2022-03-20 14:31:16
回答 3查看 70关注 0票数 2

我已经用C++进行了很长时间的编码,最近遇到了对对的绑定。请有人解释一下为什么下面的代码不能工作,或者建议一个等价的替换?

代码语言:javascript
复制
pair<int,pair<int,int>> x = {10,{3,5}};
int w, u, v;
tie(w,tie(u,v)) = x;

我可以用这个绕开它

代码语言:javascript
复制
w = x.ff;
tie(u,v) = x.ss;

只是感觉不太好。非常感谢

EN

回答 3

Stack Overflow用户

发布于 2022-03-20 14:37:16

因为std::tie接受lvalue引用,而且由于嵌套std::tie返回元组的prvalue,所以不能将rvalue绑定到lvalue引用。

尝尝这个

代码语言:javascript
复制
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;

演示

票数 1
EN

Stack Overflow用户

发布于 2022-03-20 14:46:17

我认为这可能是因为我们只能在中将lvalue写成参数。有关更多信息,您可以查看:http://www.cplusplus.com/reference/tuple/tie/

票数 0
EN

Stack Overflow用户

发布于 2022-03-21 12:03:26

正如在这篇文章(我们是否可以使用c++1y std:: tie () -like函数进行深度绑定?)中提到的,我可以这样做:

代码语言:javascript
复制
forward_as_tuple(w,tie(u,v)) = x;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71547678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档