https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120499
Bug ID: 120499
Summary: import std: indirect use of an exported class using a
vector yields undefined symbol
Product: gcc
Version: 15.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nico at josuttis dot de
Target Milestone: ---
***** Module file:
export module Coll;
import std;
export class Coll {
std::vector<int> vals;
};
export Coll createColl() {
return Coll{};
}
***** main file:
import std;
import Coll;
int main()
{
auto coll = createColl();
}
Yields into:
/cygdrive/p/gcc/gcc151/bin/g++151 --std=c++23 -O2 -Wall -Wextra -fmodules
-fsearch-include-path -fmodules -fsearch-include-path bits/std.cc -xc++
collmod.cppm testcoll.cpp -o collmodraw.exe
/bin/ld:
/cygdrive/c/Users/nico2/AppData/Local/Temp/ccSwGTq6.o:testcoll.cpp:(.text.startup+0x31):
undefined reference to `_ZNSt12_Vector_baseIiSaIiEE12_Vector_implD1Ev'
collect2: error: ld returned 1 exit status
Module std built with:
/cygdrive/p/gcc/gcc151/bin/g++151 --std=c++23 -O2 -Wall -Wextra -fmodules
-fsearch-include-path -fmodule-only -c bits/std.cc