gpt4 book ai didi

c++ - 你能用 std::aligned_union 违反严格的别名规则吗

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:20 27 4
gpt4 key购买 nike

做 union 的规则,例如[class.mem] p20 还允许 std::aligned_union_t ?例如,如果我在 pair<const A, B> 中存储两对( pair<A, B>std::aligned_union_t )非常量对始终处于事件状态。正在访问 pair<const A>输入是否违反了严格的别名规则?

标准似乎在 [class.mem] 中有所暗示p20 即使非 const 对处于事件状态,访问该对的 const 成员也是安全的

union U {
std::pair<A, B> pair;
std::pair<const A, const B> const_pair;
};

U u = {A{}, B{}};
cout << u.const_pair.first << endl;
cout << u.const_pair.second << endl;

但是对于std::aligned_union也是一样安全的有位置 newreinterpret_cast构建并获得正确的值(value)?

(假设AB是标准布局)

最佳答案

当核心语言说“union”时,它的意思是“union ”,即“用class-key union 定义的类”。不是被称为 aligned_union_t 的可悲的库模仿。

关于c++ - 你能用 std::aligned_union 违反严格的别名规则吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com