Пространства имён
Варианты
Действия

alignof operator (начиная с C++11)

Материал из cppreference.com
< cpp‎ | language
 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
 

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

Содержание

[править] Синтаксис

alignof( type-id )

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

[править] Объяснение

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

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

[править] Ключевые слова

alignof

[править] Примечания

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

[править] Пример

#include <iostream>
 
struct Foo {
    int   i;
    float f;
    char  c;
};
 
struct Empty {};
 
struct alignas(64) Empty64 {};
 
int main()
{
    std::cout << "Выравнивания для типа"  "\n"
        "- char             : " << alignof(char)    << "\n"
        "- pointer          : " << alignof(int*)    << "\n"
        "- class Foo        : " << alignof(Foo)     << "\n"
        "- empty class      : " << alignof(Empty)   << "\n"
        "- alignas(64) Empty: " << alignof(Empty64) << "\n";
}

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

Выравнивания для типа
- char             : 1
- pointer          : 8
- class Foo        : 4
- empty class      : 1
- alignas(64) Empty: 64

[править] См. также

требования по выравниванию ограничивают значения адресов, по которым может размещаться объект
alignas спецификатор
указывает, что для хранения переменной должны быть согласованы конкретные (C++11) сумму
Оригинал:
specifies that the storage for the variable should be aligned by specific amount (C++11)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]
Получает требования к выравниванию типа
(шаблон класса) [править]