首页 > 解决方案 > std::bit_cast 产生多个值的值表示的示例是什么?

问题描述

以下是[bit.cast]下标准(草案n4861)的引用(强调是我的)

返回:类型的对象To。隐式创建嵌套在结果中的对象 (6.7.2)。结果的值表示的每一位都等于 的对象表示中的相应位from。结果的填充位未指定。对于结果和其中创建的每个对象,如果没有对应于产生的值表示的对象类型的值,则行为未定义。如果有多个这样的值,则生成哪个值是未指定的

std::bit_cast所以我的问题是,产生与多个不同值相对应的值表示的场景示例是什么?

标签: c++language-lawyerc++20

解决方案


总和类型浮现在脑海中。一个联合可以有相同类型的成员:

union u {
    int a;
    int b;
};

现在,如果我们将某些东西位转换成 a uu我们会得到什么样的结果?它a是活跃的还是b?这些是 a 形式上不同的值u,但它们似乎具有相同的值表示。


推荐阅读