некорректная работа с модулями C++20

1    import std.core;
2    
3    int main()
4    {
5        std::vector<int> m{ 1, 2, 3, 4 };
6        for (auto& each : m)
7            std::cout << each;
8    }

Компилируется и запускается, но при этом в VS2019 в списке ошибок появляется 6 ошибок:

  1. namespace "std" не содержит члена "cout" (7 строка)
  2. namespace "std" не содержит члена "vector" (5 строка)
  3. идентификатор "m" не определен (5 строка)
  4. использование имени типа не допускается (5 строка)
  5. не удалось найти файл модуля для модуля "std.core" (1 строка)
  6. требуется точка с запятой ";" (5 строка)

и два предупреждения:

  1. C5050 Возможная несовместимая среда при импорте модуля "std.core": _M_FP_PRECISE is defined in current command line and not in module command line experimental
  2. C5050 Возможная несовместимая среда при импорте модуля "std.core": _GUARDOVERFLOW_CRT_ALLOCATORS=1 is defined in current command line and not in module command line experimental

Как можно решить проблему с некорректным отображением ошибок? Конфигурация проекта: release, x64, /std:c++latest, /experimental:module


Ответы (1 шт):

Автор решения: KoVadim

Вы используете экспериментальные фичи, поэтому возможны различные особенности. Предупреждения C5050 как раз говорят о подобном. К примеру, первое говорит, что в проекте включен режим _M_FP_PRECISE, но модуль, который используется собран без поддержки этого режима. Можно попробовать в настройках проекта отключить. Аналогично и с вторым.

А вот остальное, это не ошибки (иначе Ваш проект бы не собрался и не запустился). Это сообщения IntelliSense - части студии, которая парсит код и делает подсказки. Просто видимо оно ещё не понимает модули. Что делать? можно отключить, можно просто игнорировать

→ Ссылка