В настоящее время я пишу некоторый код на C ++ для платформы AVR и хочу отключить что-то, что принципиально не копируется. Учитывая, что я уже использую функции c ++ 0x, я подумал, что хорошим способом сделать это будет использование =delete
спецификатор:
write_only(write_only const&) = delete;
Однако, когда я пытаюсь скомпилировать это, я получаю следующую ошибку:
error: invalid pure specifier (only `= 0' is allowed) before ';' token
Это наводит меня на мысль, что данная особенность языка c ++ 0x не поддерживается avr-gcc. Я что-то не так делаю? Если нет, то как лучше всего обойти это?
Я использую WinAVR-20100110 для компиляции.
WinAVR устарел, используйте Атмел Студио вместо.
Если вы действительно хотите продолжить с WinAVR, найдите gcc
или же g++
исполняемый файл и запустить его с -v
аргумент командной строки, а затем сообщите нам, какую версию он сообщает. Обратите внимание, что удаленные функции поддерживаются в GCC начиная с версии 4.4 (ссылка на сайт).
Во всяком случае, вы также должны добавить -std=gnu++0x
или же -std=c++11
или же -std=gnu++11
параметры при компиляции для использования функций C ++ 11, или -std=c++1y
или же -std=gnu++1y
включить функции C ++ 14 (C ++ 1y).
Других решений пока нет …