Именованные требования C++: StandardLayoutType (начиная с C++11)
Указывает, что тип является типом стандартного расположения. Типы стандартного расположения полезны для взаимодействия с кодом, написанным на других языках программирования.
Примечание: стандарт не определяет именованное требование с таким названием. Это категория типов, определённая основным языком. Здесь она включена как именованное требование исключительно для единообразия.
Требования
Следующие типы в совокупности называются типами стандартного расположения:
- скалярные типы
- типы классов стандартного расположения
- массивы таких типов
- версии этих типов с квалификаторами cv
Свойства
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
| CWG 1672 | C++11 | правило о первом нестатическом члене данных не учитывало наличие пустых базовых классов | правило о первом нестатическом члене данных сделано рекурсивным |
| CWG 1813 | C++11 | класс с членом, определённым в непрямом базовом классе, формально не являлся типом стандартного расположения | все объявления членов должны находиться в одном и том же классе |
| CWG 2120 | C++11 | массив в качестве первого члена не учитывался при сравнении типа первого элемента с типом базового класса | члены-массивы учитываются |
См. также
|
(C++11) | проверяет, является ли тип типом стандартного расположения (шаблон класса) |
|
(C++26) | проверяет, является ли отражённый тип типом стандартного расположения (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/StandardLayoutType