Search code examples
c++gccubuntu-15.04

how to fix the error: ‘::max_align_t’?


I get the error

"/usr/include/c++/5/cstddef:51:11: error: ‘::max_align_t’ has not been declared using ::max_align_t; ^"

So I should update the libraries because I find this solution:

"A workaround until libraries get updated is to include <cstddef> or <stddef.h> before any headers from that library."
I wrote some command on the Ubuntu terminal such as:

bash $ sudo apt-get install apt-file
bash $ sudo apt-file update
bash $ apt-file search stddef.h

Then still the error exist. Thank you


Solution

  • In the .cpp file where this compile error occurs you need to add

    #include <cstddef>
    

    before any of the other headers, e.g.

    main.cpp (broken)

    #include <cstdio>
    
    int main()
    {
        using ::max_align_t;
        puts("Hello World");
        return 0;
    }
    

    Try to compile that:

    $ g++ -std=c++11 -o test main.cpp
    main.cpp: In function ‘int main()’:
    main.cpp:5:10: error: ‘::max_align_t’ has not been declared
      using ::max_align_t;
          ^
    

    Then fix it:

    main.cpp (fixed)

    #include <cstddef>
    #include <cstdio>
    
    int main()
    {
        using ::max_align_t;
        puts("Hello World");
        return 0;
    }
    

    Compile and run it:

    $ g++ -std=c++11 -o test main.cpp
    $ ./test
    Hello World