gpt4 book ai didi

c++ - 以符合标准的方式使用与数组相同类型的成员重新解释结构

转载 作者:可可西里 更新时间:2023-11-01 17:40:01 26 4
gpt4 key购买 nike

<分区>

在各种 3d 数学代码库中,我有时会遇到这样的事情:

struct vec {
float x, y, z;

float& operator[](std::size_t i)
{
assert(i < 3);
return (&x)[i];
}
};

AFAIK 是非法的,因为允许实现在成员之间虚假地添加填充,即使它们属于同一类型,但实际上没有人会这样做。

这可以通过 static_assert 施加约束来合法化吗?

static_assert(sizeof(vec) == sizeof(float) * 3);

static_assert 未被触发是否意味着 operator[] 执行预期的操作并且不在运行时调用 UB?

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