Компилятор Intel — ошибка: идентификатор «alignof» не определено

Я пытаюсь запустить пример оператора alignof.

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

Когда я компилирую его с помощью gcc (g ++ -std = c ++ 11 alignof.cpp), я не получаю ошибок.
Но когда я компилирую его с помощью icc (icpc -std = c ++ 11 alignof.cpp), я получаю следующие ошибки, и я не знаю почему:

cenas.cpp(13): error: type name is not allowed
std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
^

cenas.cpp(13): error: identifier "alignof" is undefined
std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
^

cenas.cpp(14): error: type name is not allowed
<< "alignment of pointer : "    << alignof(int*)  << '\n'
^

cenas.cpp(14): error: expected an expression
<< "alignment of pointer : "    << alignof(int*)  << '\n'
^

cenas.cpp(15): error: type name is not allowed
<< "alignment of char : "       << alignof(char)  << '\n'
^

cenas.cpp(16): error: type name is not allowed
<< "alignment of Foo : "        << alignof(Foo)   << '\n' ;

Я запускаю код на той же машине и меняю компиляторы командой module.
Как можно определить оператор alignof?

4

Решение

Различные компиляторы по-разному поддерживают новые языковые функции, представленные в 2011 году.

В соответствии с этот стол, Компилятор Intel пока не поддерживает alignof,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]