https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100707
--- Comment #1 from wang ivor ---
A quick workaround: https://wandbox.org/permlink/n8E5xJuJhq1CUA0e
Create a module that only contains the namespace declaration, and 'export
import' it whenever you declare a new namespace.
// namespace_decl.cc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100707
Bug ID: 100707
Summary: [modules] ICE on nested namespace
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100616
--- Comment #2 from wang ivor ---
One workaround I found is to always use templates to refer to C inside modules
and only ever instantiate them in the outermost translation units.
Or, if you only instantiate C with template arguments of primit
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100617
--- Comment #1 from wang ivor ---
A workaround is to create a module that exports only the namespace A and
'export import' it in the module 'test1'.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100616
--- Comment #1 from wang ivor ---
Seems like the same bug happens whenever you use a class template with a
non-type template argument in two modules with dependency. This seems to be a
pretty serious bug that renders non-type template argument b
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100617
Bug ID: 100617
Summary: [modules] Exported namespace not visible from outside
when the module imports another module that declares
the same namespace
Product: gcc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100616
Bug ID: 100616
Summary: [modules] ICE when a class template taking a non-type
template argument is used both inside and outside the
defining module
Product: gcc