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

Reply via email to