get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2218237/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2218237,
    "url": "http://patchwork.ozlabs.org/api/patches/2218237/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260331184249.2895803-2-ppalka@redhat.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260331184249.2895803-2-ppalka@redhat.com>",
    "list_archive_url": null,
    "date": "2026-03-31T18:42:49",
    "name": "[2/2] libstdc++/ranges: Inline hidden friends' member function helpers",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "cd0db2c39c86a60c2d72b37eff630dc3aff18dfb",
    "submitter": {
        "id": 78319,
        "url": "http://patchwork.ozlabs.org/api/people/78319/?format=api",
        "name": "Patrick Palka",
        "email": "ppalka@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260331184249.2895803-2-ppalka@redhat.com/mbox/",
    "series": [
        {
            "id": 498240,
            "url": "http://patchwork.ozlabs.org/api/series/498240/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=498240",
            "date": "2026-03-31T18:42:49",
            "name": "[1/2] libstdc++: Implement P3725R3 Filter View Extensions for Safer Use",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498240/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2218237/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218237/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=HOLflOry;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=HOLflOry",
            "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "sourceware.org; spf=pass smtp.mailfrom=redhat.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flcTX3kQxz1yCp\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 01 Apr 2026 05:44:00 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 6599B4B7A1EF\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 18:43:58 +0000 (GMT)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 051874B7A1E0\n for <gcc-patches@gcc.gnu.org>; Tue, 31 Mar 2026 18:42:58 +0000 (GMT)",
            "from mail-qv1-f71.google.com (mail-qv1-f71.google.com\n [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-63-qZMSOVjIOj2YYLwWrg_3FQ-1; Tue, 31 Mar 2026 14:42:57 -0400",
            "by mail-qv1-f71.google.com with SMTP id\n 6a1803df08f44-89ccf10567dso30783056d6.3\n for <gcc-patches@gcc.gnu.org>; Tue, 31 Mar 2026 11:42:57 -0700 (PDT)",
            "from idea ([2600:4040:aa66:bf00:9e8e:99ff:fed1:71f])\n by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-89ecfd520a6sm90371606d6.41.2026.03.31.11.42.54\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 31 Mar 2026 11:42:54 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 6599B4B7A1EF",
            "OpenDKIM Filter v2.11.0 sourceware.org 051874B7A1E0"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 051874B7A1E0",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 051874B7A1E0",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774982579; cv=none;\n b=RmMsW+tFiAVgKvjt27IZmyFrPIc3kU0bjcQwOKw26INs0Ei9HsB6m10vGIBE8+h3ed6FWGIuegFs+uUdh/IYqc6ABJPXaf9C/Rqby58QqChcVshctrn+H6vy3/MuBlbSelkuIxs8sykdBpIUXy2p1h+qcClvg5xurmJNAh4KIdg=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774982579; c=relaxed/simple;\n bh=Ki1/K3PXVDdtInEz6XR0wWnLr4iaBKmWkreeBVFjZ/4=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=Qyav1kalcLLHqBAG+oaE176/K85JI9iFuYBP9AJ3r9GXXRp/JPwWi5FaGs0J5QDnXOIovao9FsKqmfBghtZYG+pm1UcJT+ZEwCgZHZfK9WDwPHdg8Oz4XKzlPm4dChcy9Onadb4tCjfnNfQB+7e357qW2ql6T4qmSzKmRQDUvgY=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774982578;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=OWKc9hh+qeOgXxVOYbUE8bIY+leY2S3Dh5/GMQPvY3Q=;\n b=HOLflOryfY6vjFW6k5GJFZkyZa0qp6ywJxoUBBZycisjoLyPabU3h9Kt/Z6LLbgPI3YX1a\n AKdejuwycJDe1+L7PbFLN57BJAZtwB7fJ8wrhrybHoBeN59o6T967KlvtNVLi5OHDegpqK\n fkSmgLwucP2MhT2aSAGVWr6a2jVHUsw=",
        "X-MC-Unique": "qZMSOVjIOj2YYLwWrg_3FQ-1",
        "X-Mimecast-MFC-AGG-ID": "qZMSOVjIOj2YYLwWrg_3FQ_1774982577",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774982576; x=1775587376;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=OWKc9hh+qeOgXxVOYbUE8bIY+leY2S3Dh5/GMQPvY3Q=;\n b=YA5Wc89DA9Cr2ytgkg51f9UcqWShbAwUGr1MgsmbDIH/Gs82HQeUPkD6cSCiPTptJb\n Oxt05KQBCjTDFqWTOmpKSkUcjIvtReERIQCvBgJz4DgoHVyYAeTbFESQJXEzjWhTPUne\n 2hPokBcUsFROzdSoIrO8jDrtWPaym5uaDDPyJ1ftLsMjP6WQ1/R6tyQm0u/DdjJqCRez\n /NZ9Ji5UrE0j5QZ+Z+1IHpHwWMt92P6Oe1uh9Hx42r+GsT10uOC4fIDyt5dJ9nxTNf55\n zEnDgld4HJLjdYR9lJMvQfiuGZO1etfL2+JEbC2xC1VeEpEPMmOTPwL2Rrdpu1OVYGwv\n Issg==",
        "X-Gm-Message-State": "AOJu0YzXcn2ejzmPrdIFwAZ15ndY0JLrAhjTwZOurqkWr2UueDTcu7pD\n rtRe0ZpcQQ8zFuBnfJNYsFJIJLcCkL70igCpJP9ESvXD8CJcs2kR17L+JUcbNMmmu6kSibGqylK\n 71gckTKAZGwmPnkm3rvPus5Bnl+n4WeUOpIu3mYGYZ2nKu5Gjfvp/XX9yoyJyG5Uj10or+A50cs\n 8JYGegQXULwW6ukmmP7o6olWH2furBh2A8DqnsiRJv",
        "X-Gm-Gg": "ATEYQzwmfnEGUBuixpzWogOoXdB/K7/4EK0SD3otg889HfPBpxK6IQ6DqTWtTHeSf1m\n ZEMUmJS/qGtvd2wZV9V7I5sux3h9nKoSoDEIGZXwNWZQBJf2SrYPcreDG1HVgVAtd/wmDppJDN4\n zHthV4gwsLfY5seUG7+pGt73VwFDW9f3ZvMnlAFG94XuAK226noD8ihx3q2OH8oO950GPMp88Up\n CUquy1rT1ztYuoQvIMbfL3u5LbVjmflmCdqNUD9nVgpHLaGTPRBKwD70zvqzdKNCOz+DJ6GizT6\n lkk6WzmPswz3azIiHRlZ3JqHic81mTC4lSbteNOW3ZUJQ03BOrMkoTTvEgecT8o5tNFZzuenWwI\n nfGNpVOWkexV+",
        "X-Received": [
            "by 2002:a05:6214:2468:b0:89a:7d14:66cb with SMTP id\n 6a1803df08f44-8a4393b6b7cmr8998296d6.5.1774982575750;\n Tue, 31 Mar 2026 11:42:55 -0700 (PDT)",
            "by 2002:a05:6214:2468:b0:89a:7d14:66cb with SMTP id\n 6a1803df08f44-8a4393b6b7cmr8997956d6.5.1774982575221;\n Tue, 31 Mar 2026 11:42:55 -0700 (PDT)"
        ],
        "From": "Patrick Palka <ppalka@redhat.com>",
        "To": "gcc-patches@gcc.gnu.org",
        "Cc": "libstdc++@gcc.gnu.org,\n\tPatrick Palka <ppalka@redhat.com>",
        "Subject": "[PATCH 2/2] libstdc++/ranges: Inline hidden friends' member function\n helpers",
        "Date": "Tue, 31 Mar 2026 14:42:49 -0400",
        "Message-ID": "<20260331184249.2895803-2-ppalka@redhat.com>",
        "X-Mailer": "git-send-email 2.53.0.764.g270e10ad6d",
        "In-Reply-To": "<20260331184249.2895803-1-ppalka@redhat.com>",
        "References": "<20260331184249.2895803-1-ppalka@redhat.com>",
        "MIME-Version": "1.0",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "8iNwLlTI1zkX47oWtEQ_lrYL0ZEUQRiI7VeHupUZPoc_1774982577",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "X-BeenThere": "gcc-patches@gcc.gnu.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>",
        "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>",
        "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>",
        "List-Post": "<mailto:gcc-patches@gcc.gnu.org>",
        "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>",
        "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>",
        "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"
    },
    "content": "Tested on x86_64-pc-linux-gnu, does this look OK for trunk only?\n\n-- >8 --\n\nThese helpers were needed to work around GCC's historically strict\ninterpretation of friendship for hidden friends whereby they did not\ninherit the friends of the containing class.  But this has been relaxed\nin r13-465 which granted hidden friends the same access as any other\nmember declaration, and <ranges> additions since then commit rely on\nthis relaxed interpretation.  (Note that Clang shares this relaxed\ninherpretation since inception, though MSVC / EDG seem to have the\nstrict interpretation.)\n\nThis patch removes these roundabout member functions and inlines\ntheir logic directly into the respective friend operators for sake\nof simplicity and consistency.\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/std/ranges (iota_view::_Sentinel): Remove _M_equal and\n\t_M_distance_from.  Inline logic into friend operators.\n\t(basic_istream_view::_Iterator): Remove _M_at_end.  Inline logic\n\tinto operator==.\n\t(transform_view::_Sentinel): Remove __distance_from and __equal.\n\tInline logic into friend operators.\n\t(join_view::_Sentinel): Remove __equal.  Inline logic into operator==.\n\t(lazy_split_view::_OuterIter): Remove __at_end.  Inline logic into\n\toperator==.\n\t(split_view::_Sentinel): Remove _M_equal.  Inline logic into operator==.\n\t(elements_view::_Sentinel): Remove _M_equal and _M_distance_from.\n\tInline logic into friend operators.\n---\n libstdc++-v3/include/std/ranges | 74 +++++++--------------------------\n 1 file changed, 16 insertions(+), 58 deletions(-)",
    "diff": "diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges\nindex 80c3f922c201..a965a221f299 100644\n--- a/libstdc++-v3/include/std/ranges\n+++ b/libstdc++-v3/include/std/ranges\n@@ -752,14 +752,6 @@ namespace ranges\n       struct _Sentinel\n       {\n       private:\n-\tconstexpr bool\n-\t_M_equal(const _Iterator& __x) const\n-\t{ return __x._M_value == _M_bound; }\n-\n-\tconstexpr auto\n-\t_M_distance_from(const _Iterator& __x) const\n-\t{ return _M_bound - __x._M_value; }\n-\n \t_Bound _M_bound = _Bound();\n \n       public:\n@@ -771,17 +763,17 @@ namespace ranges\n \n \tfriend constexpr bool\n \toperator==(const _Iterator& __x, const _Sentinel& __y)\n-\t{ return __y._M_equal(__x); }\n+\t{ return __x._M_value == __y._M_bound; }\n \n \tfriend constexpr iter_difference_t<_Winc>\n \toperator-(const _Iterator& __x, const _Sentinel& __y)\n \t  requires sized_sentinel_for<_Bound, _Winc>\n-\t{ return -__y._M_distance_from(__x); }\n+\t{ return -(__y._M_bound - __x._M_value); }\n \n \tfriend constexpr iter_difference_t<_Winc>\n \toperator-(const _Sentinel& __x, const _Iterator& __y)\n \t  requires sized_sentinel_for<_Bound, _Winc>\n-\t{ return __x._M_distance_from(__y); }\n+\t{ return __x._M_bound - __y._M_value; }\n \n \tfriend iota_view;\n       };\n@@ -1006,14 +998,10 @@ namespace views\n \n \tfriend bool\n \toperator==(const _Iterator& __x, default_sentinel_t)\n-\t{ return __x._M_at_end(); }\n+\t{ return !*__x._M_parent->_M_stream; }\n \n       private:\n \tbasic_istream_view* _M_parent;\n-\n-\tbool\n-\t_M_at_end() const\n-\t{ return !*_M_parent->_M_stream; }\n       };\n \n       friend _Iterator;\n@@ -2245,16 +2233,6 @@ namespace views::__adaptor\n \t  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;\n \t  using _Base = transform_view::_Base<_Const>;\n \n-\t  template<bool _Const2>\n-\t    constexpr auto\n-\t    __distance_from(const _Iterator<_Const2>& __i) const\n-\t    { return _M_end - __i._M_current; }\n-\n-\t  template<bool _Const2>\n-\t    constexpr bool\n-\t    __equal(const _Iterator<_Const2>& __i) const\n-\t    { return __i._M_current == _M_end; }\n-\n \t  sentinel_t<_Base> _M_end = sentinel_t<_Base>();\n \n \tpublic:\n@@ -2281,21 +2259,21 @@ namespace views::__adaptor\n \t\t       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>\n \t    friend constexpr bool\n \t    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)\n-\t    { return __y.__equal(__x); }\n+\t    { return __x._M_current == __y._M_end; }\n \n \t  template<bool _Const2,\n \t\t   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>\n \t    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>\n \t    friend constexpr range_difference_t<_Base2>\n \t    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)\n-\t    { return -__y.__distance_from(__x); }\n+\t    { return -(__y._M_end - __x._M_current); }\n \n \t  template<bool _Const2,\n \t\t   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>\n \t    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>\n \t    friend constexpr range_difference_t<_Base2>\n \t    operator-(const _Sentinel& __y, const _Iterator<_Const2>& __x)\n-\t    { return __y.__distance_from(__x); }\n+\t    { return __y._M_end - __x._M_current; }\n \n \t  friend _Sentinel<!_Const>;\n \t};\n@@ -3299,11 +3277,6 @@ namespace views::__adaptor\n \t  using _Parent = __detail::__maybe_const_t<_Const, join_view>;\n \t  using _Base = join_view::_Base<_Const>;\n \n-\t  template<bool _Const2>\n-\t    constexpr bool\n-\t    __equal(const _Iterator<_Const2>& __i) const\n-\t    { return __i._M_get_outer() == _M_end; }\n-\n \t  sentinel_t<_Base> _M_end = sentinel_t<_Base>();\n \n \tpublic:\n@@ -3325,7 +3298,7 @@ namespace views::__adaptor\n \t\t       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>\n \t    friend constexpr bool\n \t    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)\n-\t    { return __y.__equal(__x); }\n+\t    { return __x._M_get_outer() == __y._M_end; }\n \n \t  friend _Sentinel<!_Const>;\n \t};\n@@ -3500,10 +3473,6 @@ namespace views::__adaptor\n \t  using _Parent = __detail::__maybe_const_t<_Const, lazy_split_view>;\n \t  using _Base = lazy_split_view::_Base<_Const>;\n \n-\t  constexpr bool\n-\t  __at_end() const\n-\t  { return __current() == ranges::end(_M_parent->_M_base) && !_M_trailing_empty; }\n-\n \t  // [range.lazy.split.outer] p1\n \t  //  Many of the following specifications refer to the notional member\n \t  //  current of outer-iterator.  current is equivalent to current_ if\n@@ -3656,7 +3625,10 @@ namespace views::__adaptor\n \n \t  friend constexpr bool\n \t  operator==(const _OuterIter& __x, default_sentinel_t)\n-\t  { return __x.__at_end(); };\n+\t  {\n+\t    return __x.__current() == ranges::end(__x._M_parent->_M_base)\n+\t      && !__x._M_trailing_empty;\n+\t  }\n \n \t  friend _OuterIter<!_Const>;\n \t  friend _InnerIter<_Const>;\n@@ -4049,10 +4021,6 @@ namespace views::__adaptor\n     private:\n       sentinel_t<_Vp> _M_end = sentinel_t<_Vp>();\n \n-      constexpr bool\n-      _M_equal(const _Iterator& __x) const\n-      { return __x._M_cur == _M_end && !__x._M_trailing_empty; }\n-\n     public:\n       _Sentinel() = default;\n \n@@ -4063,7 +4031,7 @@ namespace views::__adaptor\n \n       friend constexpr bool\n       operator==(const _Iterator& __x, const _Sentinel& __y)\n-      { return __y._M_equal(__x); }\n+      { return __x._M_cur == __y._M_end && !__x._M_trailing_empty; }\n     };\n   };\n \n@@ -4670,16 +4638,6 @@ namespace views::__adaptor\n \tstruct _Sentinel\n \t{\n \tprivate:\n-\t  template<bool _Const2>\n-\t    constexpr bool\n-\t    _M_equal(const _Iterator<_Const2>& __x) const\n-\t    { return __x._M_current == _M_end; }\n-\n-\t  template<bool _Const2>\n-\t    constexpr auto\n-\t    _M_distance_from(const _Iterator<_Const2>& __i) const\n-\t    { return _M_end - __i._M_current; }\n-\n \t  using _Base = elements_view::_Base<_Const>;\n \t  sentinel_t<_Base> _M_end = sentinel_t<_Base>();\n \n@@ -4707,21 +4665,21 @@ namespace views::__adaptor\n \t\t       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>\n \t    friend constexpr bool\n \t    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)\n-\t    { return __y._M_equal(__x); }\n+\t    { return __x._M_current == __y._M_end; }\n \n \t  template<bool _Const2,\n \t\t   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>\n \t    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>\n \t    friend constexpr range_difference_t<_Base2>\n \t    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)\n-\t    { return -__y._M_distance_from(__x); }\n+\t    { return -(__y._M_end - __x._M_current); }\n \n \t  template<bool _Const2,\n \t\t   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>\n \t    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>\n \t    friend constexpr range_difference_t<_Base2>\n \t    operator-(const _Sentinel& __x, const _Iterator<_Const2>& __y)\n-\t    { return __x._M_distance_from(__y); }\n+\t    { return __x._M_end - __y._M_current; }\n \n \t  friend _Sentinel<!_Const>;\n \t};\n",
    "prefixes": [
        "2/2"
    ]
}