The Plain Case (Siberian)
Importing the Standard Library walked through the setup, and POSIX Is Not import std, Macros and the Module Boundary, Macros Are Not Exported by import std, A Compile-Flag Dialect Tag That Propagates, and No Global Namespace Leakage each demonstrated a specific way import std; isn’t quite a drop-in replacement for the headers it replaces. None of that complexity is intrinsic to the feature itself, though — it’s all in the build tooling and in code that leaned on non-standard conveniences. Strip those away and this is what’s left.
1 export module Siberian;
2
3 import std;
4
5 export auto meow() -> void {
6 std::println("Сибирская кошка говорит «Мяу».");
7 }
1 import Siberian;
2
3 auto main() -> int {
4 meow();
5
6 return 0;
7 }
No global module fragment, no macros, no POSIX calls, no project-wide compile flags to fight with — import std; (line 3) alone brings in std::println and everything else in the standard library namespace. Building it is exactly the setup Importing the Standard Library already walked through, with nothing extra layered on top.