In the current standard draft § 10.2 [module.interface], we see:
export using namespace N; // error: does not declare a name
In the same section, there are also correct exports of non-namespace using
declarations
export using T = S; // OK, exports name T denoting type S
and I believe that namespace aliases should also work
export namespace N = M;
The distinction is that the using namespace
directive provides a tunnel for unqualified lookup to search outside its natural scope, but doesn't declare any new names. Both using declarations and namespace aliases do declare new names, and those names should be exportable.
Concretely, either of these should work:
export using float3 = linalg::aliases::float3; // for each type
export namespace la = linalg::aliases; // or just provide a short name