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
Version: 11.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: amorvincitomnia.iw at gmail dot com
Target Milestone: ---
See it live: https://wandbox.org/permlink/1Tgk83eCk7VYm3a3
Minimum code to reproduce the error:
//test2.cc
export module test2;
export namespace A{}
//test1.cc
export module test1;
import test2;
export namespace A{
int a = 3;
}
//prog.cc
import test1;
void g(){
A::a;
}
Compile it with:
$ g++ "-std=c++20" "-fmodules-ts" "test2.cc" "test1.cc" "prog.cc"
Results in error:
prog.cc: In function 'void g()':
prog.cc:5:5: error: 'A' has not been declared
5 | A::a;
| ^
Reproduces in both g++ 11.1.0 and g++ 12.0.0 20210510.