ポインターを使用して同じ型のメンバー変数を反復処理すると失敗する具体的なケースがあるかどうか疑問に思っていますか? メンバーのパッキング/パディングが実装定義であることは知っていますが、私が試した実装 (gcc、clang、および Visual Studio) では、失敗することはありません。
次のような失敗する可能性がある場合でも、すべて成功します。
#pragma pack(16)
struct MyStruct
{
char firstChar;
char mySecondChar;
char thirdChar;
};
class MyContainerStruct
{
public:
uint64_t big;
MyStruct z1;
MyStruct z2;
} gStruct;
main()
{
MyStruct *pStruct = &(gStruct.z1); // Start with gStruct.z1
pStruct++; // Iterate to gStruct.z2
cout << pStruct->myThirdChar;
}
同じ型のクラス メンバーの反復処理が失敗するケースを見つけられる人はいますか?