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

            Bug ID: 107906
           Summary: Function template specialization given weak rather
                    than local symbol
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: herring at lanl dot gov
  Target Milestone: ---

Current trunk, given <https://godbolt.org/z/aoMecfhqb>

  template<class> using X=int;
  namespace {
    template<class> using Y=int;
  }

  template<template<class> class Q> void f() {}
  template void f<X>();

  void (*fp)()=f<Y>;

emits weak symbols for both specializations of f, despite the fact that a
different "void f<(anonymous namespace)::Y>()" might be defined in another
translation unit (perhaps as an explicit specialization).

Reply via email to