Translation unit #1:
export module M:A; export struct B;
Translation unit #2:
module M:B; struct B { operator int(); };
Translation unit #3:
module M:C; import :A; B b1; // error: no reachable definition of struct B
Translation unit #4:
export module M; export import :A; import :B; B b2; export void f(B b = B());
Translation unit #5:
module X; import M; B b3; // error: no reachable definition of struct B void g() { f(); } // error: no reachable definition of struct B— end example
Translation unit #1:
export module A; struct X {}; export using Y = X;
Translation unit #2:
module B; import A; Y y; // OK, definition of X is reachable X x; // error: X not visible to unqualified lookup— end example