Vlad Harchev wrote > > > Надо основываться на стандарте языка, а не на компиляторе. Хорошо > > > написанный код соберется всюду. > > > > тут есть небольшой нюанс, так как кое-какой вполне норамальный > > Ц++ код не совсем правильно интерпретируется gcc-2.95 > > > > даже если не лезть в темплейтные навороты, > > хотя plain C уже как-то не совсем ко двору, > > первое, что приходит в голову > > > > struct A { void f(){}; }; struct B: public A { int i; }; > > > > sizeof(B) ? > > > > (большинство компилеров под ia32 считают, что должно получаться 4, а не 8 ) > > В стандарте про гаранитии размеров нет ни слова (кроме того что размер > потомка будет не меньше размера предка). Наконец-то докопался до стандарта и нашёл там следующее: п. 9.3: A class with an empty sequence of members and base class objects is an empty class. Complete objects and member subobjects of an empty class type shall have nonzero size.1) и далее: _________________________ 1) That is, a base class subobject of an empty class type may have zero size. (На самом деле это не стандарт, а draft от Decembeer 1997, последний, насколько мне известно. Номер пункта в самом стандарте скорее всего не совпадает, но то, что там эти слова есть --- точно.) -- Best Regards! | Когда вам платят за работу, надо по крайней мере Alexey Voinov | делать вид, что вы работаете... | Б.Виан "Осень в Пекине" voins@voins.program.ru voins@online.ru vns@altlinux.ru