Стандартный макет С++

Я просматривал отличные статьи о классах C++ POD, Trivial и Standard Layout . Одно свойство стандартного макета, которое я не совсем понял, заключается в следующем:-

 A standard layout has no base classes of the same type as the first 
    non-static data member

Таким образом, следующее не будет стандартным макетом, поскольку он имеет первый член, такой же, как базовый класс

struct NonStandardLayout3 : StandardLayout1 {
    StandardLayout1 x; // first member cannot be of the same type as base
};

Но с точки зрения производительности -и свойств -чем вышеприведенная структура отличается от

struct StandardLayout5 : StandardLayout1 {
    int x;
    StandardLayout1 y; // can have members of base type if they're not the first   
};

что является исправлением того, что выше этого.

17
задан Community 23 May 2017 в 12:25
поделиться