# alignof operator (since C++11)

From cppreference.com
< cpp‎ | language

Queries alignment requirements of a type

### 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.

### Keywords

`alignof`

### Notes

See alignment for the meaning and properties of the value returned by `alignof`.

### Example

Run this code

    #include <iostream>

    struct Foo {
        int   i;
        float f;
        char  c;
    };

    struct Empty {};

    struct alignas(64) Empty64 {};

    int main()
    {
        std::cout << "Alignment of"  "\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";
    }

Possible output:

    Alignment of
    - char             : 1
    - pointer          : 8
    - class Foo        : 4
    - empty class      : 1
    - alignas(64) Empty: 64

### 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)
alignment_of (C++11) | obtains the type's alignment requirements (class template)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/alignof&oldid=85639"