https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116401

            Bug ID: 116401
           Summary: [modules] Header units can contain definitions of
                    non-inline decls with external linkage
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nshead at gcc dot gnu.org
            Blocks: 103524
  Target Milestone: ---

https://eel.is/c++draft/module.import#6 says:

> A header unit shall not contain a definition of a non-inline function or 
> variable whose name has external linkage.

However we currently accept the following code:

  // header.hpp
  int foo() { return 5; }

  // main.cpp
  import "header.hpp";
  int main() {
    return foo();
  }

Doing 'g++ -fmodules-ts header.hpp main.cpp' builds the header unit
successfully but then fails to link with "undefined reference to 'foo'" which
is fairly unhelpful.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524
[Bug 103524] [meta-bug] modules issue

Reply via email to