В чем проблема файла std lib facilities.h?

Когда использую заголовочный файл из книги Страуструпа "std_lib-facilities.h" возникает ошибка следующего характера:
error C2338: is deprecated and will be REMOVED. Please use . You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
В чем проблема?
  • Вопрос задан
  • 2326 просмотров
Решения вопроса 2
@Mercury13
Программист на «си с крестами» и не только
Проблема в подключённом к нему файле hash_list или hash_map (они никогда не были стандартом Си++, но по факту их многие реализовывали, с двумя разными стандартами — один от SGI, второй переименованный вошёл в STL).
Переименуйте в unordered_list, unordered_map. И надейтесь, что третий и далее параметры шаблонов не использовались.

Существуют версии этого файла, откорректированные под C++11.

А можно заглушить ошибку, добавив в «#defines» проекта _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS. И будьте готовы, что в один прекрасный день вы обновите компилятор и хватитесь этого файла.
Ответ написан
Комментировать
@MiiNiPaa
Мои психические способности подсказывают, что ошибка говорит про "hash_map" (Серьёзно, сложно перечитать свой вопрос после публикации и поправить косяки?).

Это происходит, потому что MS удаляет этот нестандартный и устаревший заголовочный файл из поставки в будущем. Можно нормально переписать файл, дождаться обновления от Страуструпа, скачать исправленный файл из интерента или сделать то, что предлагает текст ошибки и добавить перед включением std_lib_facilities.h define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы