A private-module-fragment ends
the portion of the module interface unit
that can affect the behavior of other translation units.
A private-module-fragment allows a module
to be represented as a single translation unit
without making all of the contents of the module reachable to importers.
[Example 1: exportmodule A;
exportinlinevoid fn_e(); // error: exported inline function fn_e not defined// before private module fragmentinlinevoid fn_m(); // OK, module-linkage inline functionstaticvoid fn_s();
exportstruct X;
exportvoid g(X *x){
fn_s(); // OK, call to static function in same translation unit
fn_m(); // OK, call to module-linkage inline function}export X *factory(); // OKmodule:private;
struct X {}; // definition not reachable from importers of A
X *factory(){returnnew X ();
}void fn_e(){}void fn_m(){}void fn_s(){} — end example]