В C ++ модули стандартизируются для решения проблемы #include bloat среди прочего. Компиляторы в C ++ должны анализировать слишком много.
Но также, потому что C ++ хранит данные встроенными, что эффективно, даже вызывающий должен знать о расположении объектов в памяти.
Устраняет ли эта проблема стандарт следующего модуля?
Пример:
class GLWin {
private:
GLFWwindow* win;
glm::mat4 projection;
...
};
Объект, содержащий указатель на внутреннюю реализацию, может быть отделен пустой декларацией, то есть:
класс GLFWwindow;
но если для производительности мы включаем объект mat4 в окно, то нам нужно знать размер, который в настоящее время означает включение определения, добавление заголовочного файла, который часто огромен из-за каскадных включений. Есть ли механизм в модулях, который скрывает детали и позволяет зарезервировать правильное количество места для объекта, оставляя его непрозрачным, как указатель?