Заголовок «memory» (вероятно, находится в /usr/include/c++/4.9/memory) включает только «unique_ptr.h» и «shared_ptr.h» (вероятно, находится в /usr/include/c++/4.9/bits /unique_ptr.h и /usr/include/c++/4.9/bits/shared_ptr.h), если макрос "__cplusplus" равен или больше, чем "201103L". Проверьте себя в файле memory.h, чтобы увидеть условие препроцессора "#if" в строке 69 (или найдите строку "#if __cplusplus> = 201103L").
Как уже упоминалось, компиляция по стандартам "-std = c ++ 0x" или более поздней версии c ++ (-std = c ++ 11 или -std = c ++ 14) решает ошибки компиляции, но не индексацию затмения и проблема автозаполнения.
Для решения проблемы индексации затмения я добавил макрос препроцессора «__cplusplus» в свойства сборки проекта со значением «201103L», а затем обновил индекс;
Чтобы добавить макрос препроцессора:
«щелкните правой кнопкой мыши проект в проводнике проекта» >> Свойства >> C / C ++ Общие >> Включает препроцессор >> Записи >> GNU C ++ >> Записи настроек пользователя CDT >> Добавить ... >> Макрос препроцессора;
Затем введите макрос с именем "__cplusplus" и значением "201103L";
Затем, чтобы обновить индекс, выполните:
"щелкните правой кнопкой мыши проект в проводнике проекта" >> Индекс >> Перестроить;
Ps .: Я использовал gcc 4.9.2 и Eclipse Luna (4.4.2), на Ubuntu 15.04 64bit