c++ - Intel Compiler - error: identifier "alignof" is undefined -


i'm trying run example of alignof operator.

#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' ; } 

when compile gcc (g++ -std=c++11 alignof.cpp) no errors. when compile icc (icpc -std=c++11 alignof.cpp) following errors , don't know why:

cenas.cpp(13): error: type name not allowed       std::cout << "alignment of empty class: " << alignof(empty) << '\n'                                                            ^  cenas.cpp(13): error: identifier "alignof" undefined       std::cout << "alignment of empty class: " << alignof(empty) << '\n'                                                    ^  cenas.cpp(14): error: type name not allowed                 << "alignment of pointer : "    << alignof(int*)  << '\n'                                                            ^  cenas.cpp(14): error: expected expression                 << "alignment of pointer : "    << alignof(int*)  << '\n'                                                                ^  cenas.cpp(15): error: type name not allowed                 << "alignment of char : "       << alignof(char)  << '\n'                                                            ^  cenas.cpp(16): error: type name not allowed                 << "alignment of foo : "        << alignof(foo)   << '\n' ; 

i'm running code on same machine, , change compilers module command. how can alignof operator undefined?

different compilers have different support new language features introduced in 2011.

according this table, intel's compiler not yet support alignof.


Comments