Spec-Zone.ru › C++

Именованные требования C++: StandardLayoutType (начиная с C++11)

Указывает, что тип является типом стандартного расположения. Типы стандартного расположения полезны для взаимодействия с кодом, написанным на других языках программирования.

Примечание: стандарт не определяет именованное требование с таким названием. Это категория типов, определённая основным языком. Здесь она включена как именованное требование исключительно для единообразия.

Требования

Следующие типы в совокупности называются типами стандартного расположения:

  • скалярные типы
  • типы классов стандартного расположения
  • массивы таких типов
  • версии этих типов с квалификаторами cv

Свойства

См. стандартное расположение.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.

DR Применён к Поведение согласно опубликованной версии Правильное поведение
CWG 1672 C++11 правило о первом нестатическом члене данных не учитывало
наличие пустых базовых классов
правило о первом нестатическом члене данных
сделано рекурсивным
CWG 1813 C++11 класс с членом, определённым в непрямом базовом классе,
формально не являлся типом стандартного расположения
все объявления членов должны находиться
в одном и том же классе
CWG 2120 C++11 массив в качестве первого члена не учитывался при
сравнении типа первого элемента с типом базового класса
члены-массивы учитываются

См. также

is_standard_layout
(C++11)
проверяет, является ли тип типом стандартного расположения
(шаблон класса)
is_standard_layout_type
(C++26)
проверяет, является ли отражённый тип типом стандартного расположения
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/StandardLayoutType

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API