This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118f. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-11-07


2789. Overload resolution with implicit and explicit object member functions

Section: 12.2.4.1  [over.match.best.general]     Status: CD7     Submitter: Corentin Jabot     Date: 2023-08-08

[Accepted as a DR at the November, 2023 meeting.]

Consider:

  template <typename T = int>
  struct S {
    constexpr void f();                      / #1
    constexpr void f(this S&) requires true; / #2
  };

  void test() {
    S<> s;
    s.f();                 / #3
  }

With the current rules, the call at #3 is ambiguous, even though #2 is more constrainted.

Proposed resolution (approved by CWG 2023-11-07):

Change in 12.2.4.1 [over.match.best.general] bullet 2.6 as follows:



Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant