提问人:LeXav 提问时间:10/9/2023 更新时间:10/9/2023 访问量:74
C++ - 引用结构的最后一个字段,不占用任何空间
c++ - reference the last field of a struct without it taking any space
问:
使用 c++23,
我有一个大的记忆框架,它有一个标题,收集一些信息。
所以布局是 Main + 重复结构 Other 之后。 有没有一种现代的方式来表达这一点,而不占用任何空间?
struct Other{
int a;
int b;
};
struct Main {
uint64_t a;
uint64_t b;
Other s; <- this one
};
...
Main *m = std::bit_cast<Main*>(addr_ptr);
...
span <Other> sp {&m->s, some_length};
当前的解决方案是这样定义一个虚拟结构:
struct Main {
uint64_t a;
uint64_t b;
};
struct Main_full {
uint64_t a;
uint64_t b;
Other s;
};
并酌情施法。
但是有没有一种干净而现代的方式可以在 C++23 中表达这一点,而不必强制转换?
[[ no_unique_address ]]
空类不起作用,但这是我想找到的东西。
这只是为了代码的表现力(主观的,但这正是我所追求的)。
谢谢
答: 暂无答案
下一个:文件支持的MMAP与巨大的页面?
评论
std::bit_cast<Main*>
some_length
sp