При компиляции расширения ядра на основе IOKit компилятор c ++ не может распознать ключевое слово decltype
,
int f = 123;
int (*f_ptr)() = 0;
f_ptr = (decltype(f_ptr)) f;
Сбой компилятора в приведенном выше коде по причине: Use of undeclared identifier 'decltype'
, auto
Ключевое слово, с другой стороны, работает как ожидалось.
Однако, если я скомпилирую точно такой же код в приложении пользовательского режима на C ++, он будет работать нормально.
Любая идея, почему это?
decltype
требуется поддержка C ++ 11. Посмотрите на свои проекты Настройки сборки и убедитесь, что Диалект C ++ по крайней мере ГНУ ++ 11 / C ++ 11 или позже (ищите опцию -std =)
auto
с другой стороны, это старый спецификатор продолжительности хранения ключевое слово повторно используется в C ++ 11 [6].
Других решений пока нет …