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

            Bug ID: 118849
           Summary: Template specialisations referencing internal-linkage
                    CNTTPs are not unique
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Keywords: ABI, wrong-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nshead at gcc dot gnu.org
  Target Milestone: ---

On GCC14 and trunk, a class non-type template parameter with internal linkage
does not constrain the linkage of templates referring to it:

  namespace {
    struct A {};
  }
  template <auto Q> void foo() {}
  void bar() {
    foo<A{}>();
  }

Here 'foo' is externally visible, which can cause issues.

GCC13 handled this correctly.  I suspect this was caused by r14-9596.

Reply via email to