struct A {
// ... some methods ...
std::vector<int> foo;
// ... more data members ...
};
使用 g++4.7 和 libstdc++ 我得到std::is_standard_layout<A>::value == true
.
但是其他编译器或标准库会发生什么?
是否有任何保证(至少可以肯定?)STL 容器不会破坏标准布局?
背景:
struct B : A { // still standard-layout
// ... more methods (but no new variables!)
void bar();
};
这允许使用static_cast<B &>(a).bar()
even for A a;
。(我不是说这是好的设计!)。