Namespaces
Variants
Views
Actions

alignof operator (since C++11)

From cppreference.com
< cpp‎ | language
Revision as of 04:12, 29 January 2014 by 217.151.194.8 (Talk)

 
 
 
 

Queries alignment requirements of a type

Contents

Syntax

alignof( type-id )

Returns a value of type std::size_t.

Explanation

Returns the alignment, in bytes, required for any instance of the type indicated by type-id, which is either complete type, an array type, or a reference type.

If the type is reference type, the operator returns the alignment of referenced type; if the type is array type, alignment requirement of the element type is returned.

The types char, signed char, and unsigned char have the weakest (smallest) alignment supported by the implementation.

Keywords

alignof

Example

#include <iostream>
 
struct Empty {};
 
struct Foo {
     int f2;
     float f1;
     char c;
};
 
int main()
{
    std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
              << "alignment of pointer : "    << alignof(int*)  << '\n'
              << "alignment of char : "       << alignof(char)  << '\n'
              << "alignment of Foo : "        << alignof(Foo)   << '\n' ;
}

Output:

alignment of empty class: 1
alignment of pointer : 8
alignment of char : 1
alignment of Foo : 4

See also

alignment requirement restricts the addresses at which an object may be allocated
alignas specifier specifies that the storage for the variable should be aligned by specific amount (C++11) [edit]
obtains the type's alignment requirements
(class template) [edit]