Недавно узнал про модули в C++. Это как раз то, что мне не хватало в начале изучения языка (например ограничение видимости некоторых вспомогательных функций).
В одной из статьей Microsoft нашел следующий список модулей:
Экспериментальная библиотека разделена на следующие именованные модули:
std.regex предоставляет содержимое заголовка regex
std.filesystem предоставляет содержимое заголовка filesystem
std.memory предоставляет содержимое заголовка memory
std.threading содержит содержимое заголовков atomic, condition_variable, future, mutex, shared_mutex, и thread
std.core все остальное доступно в стандартной библиотеке C ++
Но при попытке их использовать у меня был доступ только к модулям
std и std.compat
Немного поискав информацию нашел на какой-то статье в Хабре про обзор новых добавленных возможностях стандарта C++23 информацию:
В стандартную библиотеку добавили первый полноценный модуль. Теперь всю библиотеку можно подключить одной строчкой import std;
Если вы привыкли смешивать код на C++ с кодом на C и используете C-функции из глобального namesapce, то специально для вас сделали модуль std.compat.
Как раз те, что я смог использовать. Я так понимаю список Microsoft был лишь пробой пера, а когда стандарт вроде как утвердили то удалили те модули из списка. (Или я чего то не понял).
Также у меня сложилось такое впечатление, что эти модули ещё нигде не используют, скорее всего из-за того, что это ещё новая и не опробованная полностью штука. Хотя фича довольно таки прикольная. А такое мнение сложилось из-за того что информации в интернете я нашёл крайне мало, как и примеров использования.
Ещё не совсем понял как следует реализовать модуль на несколько файлов. Например объявление класса и его методов, а в другом реализация этих же методов.
Также не совсем понял с расширением файлов. Например Microsoft рекомендует использовать *.ixx, в других компиляторах видел *.cxx, *.c++ и т.д.
Ещё вопрос стоит ли начинать полностью делать проект используя только модули вместо старого привычного #include?
П.С. Можете написать ваше мнение про данную возможность языка и используете ли вы их?