некорректная работа с модулями 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 ошибок:
- namespace "std" не содержит члена "cout" (7 строка)
- namespace "std" не содержит члена "vector" (5 строка)
- идентификатор "m" не определен (5 строка)
- использование имени типа не допускается (5 строка)
- не удалось найти файл модуля для модуля "std.core" (1 строка)
- требуется точка с запятой ";" (5 строка)
и два предупреждения:
- C5050 Возможная несовместимая среда при импорте модуля "std.core": _M_FP_PRECISE is defined in current command line and not in module command line experimental
- 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 шт):
Вы используете экспериментальные фичи, поэтому возможны различные особенности. Предупреждения C5050 как раз говорят о подобном. К примеру, первое говорит, что в проекте включен режим _M_FP_PRECISE, но модуль, который используется собран без поддержки этого режима. Можно попробовать в настройках проекта отключить. Аналогично и с вторым.
А вот остальное, это не ошибки (иначе Ваш проект бы не собрался и не запустился). Это сообщения IntelliSense - части студии, которая парсит код и делает подсказки. Просто видимо оно ещё не понимает модули. Что делать? можно отключить, можно просто игнорировать