◐ Shell
clean mode source ↗

Оператор alignof (начиная с C++11) — cppreference.com

Материал из cppreference.com

Запрашивает требования по выравниванию для указанного типа

Синтаксис

alignof( идентификатор-типа )

Возвращает значение типа std::size_t.

Объяснение

Возвращает выравнивание, в байтах, необходимое для любого экземпляра типа, указанного в идентификаторе типа, который является либо полным типом объекта, либо типом массива, тип элемента которого является полным, либо ссылочным типом на один из этих типов.

Если тип является ссылочным, оператор возвращает выравнивание ссылочного типа; если тип является типом массива, возвращается требование выравнивания для типа элемента.

Ключевые слова

alignof

Примечание

Смотрите выравнивание, чтобы узнать о значении и свойствах значения, возвращаемого alignof.

Пример

#include <iostream>
 
struct Foo {
    int   i;
    float f;
    char  c;
};

// Примечание: `alignas(alignof(long double))` ниже при желании можно 
// упростить до простого `alignas(long double)`.
struct alignas(alignof(long double)) Foo2 {
    // поместите своё определение здесь
}; 

struct Empty {};

struct alignas(64) Empty64 {};

int main()
{
    std::cout << "Выравнивание"  "\n"
        "- символа          : " << alignof(char)    << "\n"
        "- указателя        : " << alignof(int*)    << "\n"
        "- класса Foo       : " << alignof(Foo)     << "\n"
        "- класса Foo2      : " << alignof(Foo2)    << "\n"
        "- пустого класса   : " << alignof(Empty)   << "\n"
        "- alignas(64) Empty: " << alignof(Empty64) << "\n";
}

Возможный вывод:

Выравнивание
- символа          : 1
- указателя        : 8
- класса Foo       : 4
- класса Foo2      : 16
- пустого класса   : 1
- alignas(64) Empty: 64

Смотрите также