https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98756
Bug ID: 98756 Summary: Suspicious "(*this)." in mangled symbol Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- For the test in PR98545: // PR c++/98545 // { dg-do compile { target c++11 } } class a { public: a(); template <typename b> a(b); }; template <class = double> using c = a; class f { protected: template <class d, class e> void operator()(d, double, e); }; class i : f { public: template <class... g> [[gnu::used]] auto h(g...) -> decltype(operator()(g()...)) {} // { dg-final { scan-assembler "_ZN1i1hIJ1adS1_EEEDTcldtdefpTonclspcvT__EEEDpS2_" } } }; template <class> class C { public: template <class j> C(j); i k() const; int operator()() { int l = 10; c<> m, n; operator()(m, l, n); return 0; } int operator()(c<> &, c<> const &, c<> const &) const; template <class d, class e> void k(d m, double gamma, e o) const { k().h(m, gamma, o); } }; template <class r> int C<r>::operator()(c<> &, c<> const &, c<> const &) const { [&](c<> m, double gamma, c<> o) { k(m, gamma, o); }; return 0; } c<> p = C<double>(p)(); we emit $ c++filt _ZN1i1hIJ1adS1_EEEDTcldtdefpTonclspcvT__EEEDpS2_ decltype (((*this).(operator()))((a)(), (double)(), (a)())) i::h<a, double, a>(a, double, a) though other compilers emit: $ c++filt _ZN1i1hIJ1adS1_EEEDTclonclspcvT__EEEDpS2_ decltype ((operator())((a)(), (double)(), (a)())) i::h<a, double, a>(a, double, a) as mentioned in <https://gcc.gnu.org/pipermail/gcc-patches/2021-January/563419.html>. This should be investigated.