std :: bit_cast和std :: start_lifetime_as之间有什么有用的区别?

问题描述 投票:0回答:1

std::bit_cast显然是在c ++ 20中引入的。并为c ++ 23提出了std::start_lifetime_as。由于它们似乎都要求所涉及的数据类型无论如何都是琐碎的,一旦引入了后者,是否会需要前者吗?

预先致歉,因为没有提供有关这些新功能的更多信息。我只是在看了cppcon 2019关于类型调整的演讲后才听说它们的,我在Google上找不到很多关于start_lifetime_as的信息。我希望其他人对此有所了解。

编辑:根据下面的问题,对c ++ 23的提案来自here,尽管在该链接中它显然被称为std :: bless,而在最近的cppcon 2019演讲中它被称为std: :start_lifetime_as。

c++-standard-library c++20 type-punning
1个回答
0
投票

答案很简单:bit_cast返回一个值,而start_lifetime_as“更改”内存(以抽象机中存在的方式,但预计不会影响任何物理位)。您使用前者(一次)将现有对象解释为一组位。您可以使用后者(永久地)将现有位解释为一个对象。

© www.soinside.com 2019 - 2024. All rights reserved.