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