![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
VocabularyBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 3. Boost.Align
|
![]() |
Tip |
---|---|
struct B { long double d; }; struct D : virtual B { char c; }; Когда< |
Результат оператора<alignof
>отражает требование к выравниванию типа в случае полного объекта.
расширенное выравниваниепредставлено выравниванием, превышающим<alignof(std::max_align_t)
>. Определено, поддерживаются ли какие-либо расширенные выравнивания и контексты, в которых они поддерживаются. Тип, требующий расширенного выравнивания, являетсясверхвыровненным типом.
![]() |
Note |
---|---|
Каждый выровненный тип представляет собой или содержит тип класса, к которому применяется расширенное выравнивание (возможно, через нестатический элемент данных). |
Выравнивания представлены в виде значений типа<std::size_t
>. Действительные выравнивания включают только те значения, которые возвращаются выражением<alignof
>для основных типов плюс дополнительный набор значений, определяемый реализацией, который может быть пустым. Каждое значение выравнивания должно быть неотрицательной интегральной силой двух.
Уравнивания имеют порядок отболее слабогодоболее сильногоилиболее строгоговыравнивания. Более строгие выравнивания имеют большие значения выравнивания. Адрес, который удовлетворяет требованию выравнивания, также удовлетворяет любому более слабому действительному требованию выравнивания.
Требование выравнивания полного типа может быть запрошено с использованием выражения<alignof
>. Кроме того, типы<char
>,<signed
char
>и<unsigned
char
>должны иметь самое слабое требование выравнивания.
![]() |
Note |
---|---|
Это позволяет использовать типы символов в качестве основного типа для выровненной области памяти. |
Сравнение выравниваний имеет смысл и дает очевидные результаты:
![]() |
Note |
---|---|
Функция выравнивания указателей времени выполнения может использоваться для получения выровненного указателя в буфере; шаблоны выровненного хранения в библиотеке могут использоваться для получения выровненного хранилища. |
Если запрос на конкретное расширенное выравнивание в конкретном контексте не поддерживается реализацией, программа плохо сформирована. Кроме того, запрос на распределение времени выполнения динамического хранилища, для которого запрашиваемое выравнивание не может быть выполнено, рассматривается как отказ распределения.
Статья Vocabulary раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 3. Boost.Align может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 3. Boost.Align ::
реклама |