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(); / error: non-exported inline function fn_m not definedstaticvoid fn_s();
exportstruct X;
exportvoid g(X *x){
fn_s(); / OK, call to static function in same translation unit}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]