我认为该标准为我提供了查找结构的1 st 元素的功能。我似乎找不到。
我害怕对齐:我不认为reinterpret_cast
进入结构的1 st 元素是合法的吗?
例如,给定struct { int first, int second } foo
;如果我不知道foo
的布局是第1 st first中第1 st 元素的地址>元素? (这意味着&foo.first
不是有效的解决方案。)
答案 0 :(得分:1)
我认为reinterpret_cast进入结构的第一个元素是不合法的吗?
是合法的,但前提是该类为标准版式。标准草稿:
[基本化合物]
如果满足以下条件,则两个对象a和b是指针可互换的:
...
- 一个是标准布局类对象,另一个是该对象的第一个非静态数据成员, 或者,如果该对象没有静态数据成员,则该对象的任何基类子对象(10.3),或者
...
如果两个对象是指针可互换的,则它们具有相同的地址,并且有可能获得一个 通过reinterpret_cast从一个指向另一个的指针...