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

            Bug ID: 115479
           Summary: undefined reference to [abi:cxx11] with variadic
                    template of constexpr template structs
           Product: gcc
           Version: 14.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: awright at tradebot dot com
  Target Milestone: ---

GCC fails to link in this example (https://godbolt.org/z/M5hz8Gxd7). This works
with the latest Clang and MSVC.

For std::string and std::list<> types, it appears the compiled source is
missing the [abi:cxx11] tag.

$ nm --demangle main.cpp.o | rg process
U process(Configurator<STRING_PARAM[abi:cxx11], LIST_PARAM[abi:cxx11]> const&)

$ nm --demangle config.cpp.o | rg process
0000000000000000 T process(Configurator<STRING_PARAM, LIST_PARAM> const&)


If the tag is specified explicitly with `__attribute__((abi_tag("cxx11")))`,
linkage succeeds.

Reply via email to