首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::tie是否允许隐式转换?

std::tie是否允许隐式转换?
EN

Stack Overflow用户
提问于 2016-10-26 01:38:11
回答 1查看 513关注 0票数 8

在c++11中,std::tie是否允许隐式转换?

下面的代码编译并运行,但我不确定幕后到底发生了什么,或者这是否安全。

代码语言:javascript
复制
std::tuple<float,float> foo() { return std::make_tuple(0,0); }

double a, b;
std::tie(a,b) = foo(); // a and b are doubles but foo() returns floats
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-26 01:44:48

所发生的是使用tuple的移动赋值操作符的模板版本。

代码语言:javascript
复制
template< class... UTypes >
tuple& operator=(tuple<UTypes...>&& other );

它们使用自己的移动分配语义一个一个地分配单个元组成员。如果相应的成员是隐式可兑换的,它们就会被隐式转换。

这基本上是std::pair中类似功能的自然扩展,我们已经享受了很长时间了。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40252360

复制
相关文章

相似问题

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