Модули являются альтернативой #includes. Clang имеет полную реализацию для С++. Как бы я пошел, если бы захотел использовать модули с помощью Clang сейчас?
Использование
import std.io;
в исходном файле С++ не работает (компилируется), так как спецификация модулей (включая синтаксис) не является окончательной.
Документация Clang утверждает, что при передаче флага -fmodules
#includes будут переписаны на соответствующий импорт. Однако проверка препроцессора предполагает иное (test.cpp содержит только #include <stdio.h>
и пустую главную):
$ clang++-3.5 -fmodules -E test.cpp -o test
$ grep " printf " test
extern int printf (const char *__restrict __format, ...);
Кроме того, компиляция этого тестового файла с помощью -fmodules
vs no flags вообще создает один и тот же файл объекта.
Что я делаю неправильно?