Из того, что я понимаю, стандартный макет позволяет три вещи:
- Пустая оптимизация базового класса
- Обратная совместимость с C с некоторыми указателями на указатели
- Использование offsetof
Теперь в библиотеку входит метатекс предикатов is_standard_layout
, но я не вижу в нем много пользы в общем коде, поскольку те функции C, которые я перечислял выше, кажутся крайне редкими, требуют проверки общего кода. Единственное, о чем я могу думать, это использовать его внутри static_assert
, но это только для того, чтобы сделать код более надежным и не требуется.
Как is_standard_layout
полезно? Есть ли какие-либо вещи, которые были бы невозможны без него, что потребовало бы его в стандартной библиотеке?