Предположим, у меня есть два класса, которые я ожидаю, чтобы иметь точно такую же структуру памяти:
struct A {
int x;
int y;
};
/* possibly more code */
struct B {
int a;
int b;
};
Есть ли что-то в стандарте, что гарантирует, что я могу безопасно static_assert(sizeof(A) == sizeof(B))
?
В качестве более слабого варианта рассмотрим
struct C {
int a;
};
static_assert( sizeof(A) >= sizeof(C) ); // can this ever fail?
static_assert( sizeof(A) > sizeof(C) ); // can this ever fail?
Этот вопрос был вызван этим. Наивно я не ожидал бы, что какое-либо из утверждений потерпит неудачу, но гарантировано ли это?