get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2216601,
    "url": "http://patchwork.ozlabs.org/api/patches/2216601/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/7ec8b523-1fb1-4f5c-bcde-940fb31b1a65@gmail.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": "<7ec8b523-1fb1-4f5c-bcde-940fb31b1a65@gmail.com>",
    "list_archive_url": null,
    "date": "2026-03-26T21:46:09",
    "name": "[_GLIBCXX_DEBUG] Fix COW basic_string checks",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "30f5dc7be5232907cf2904ea5d89a18d7b41175d",
    "submitter": {
        "id": 9231,
        "url": "http://patchwork.ozlabs.org/api/people/9231/?format=api",
        "name": "François Dumont",
        "email": "frs.dumont@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/7ec8b523-1fb1-4f5c-bcde-940fb31b1a65@gmail.com/mbox/",
    "series": [
        {
            "id": 497661,
            "url": "http://patchwork.ozlabs.org/api/series/497661/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=497661",
            "date": "2026-03-26T21:46:09",
            "name": "[_GLIBCXX_DEBUG] Fix COW basic_string checks",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/497661/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2216601/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2216601/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 (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Fmm+Jad9;\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 (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Fmm+Jad9",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com",
            "sourceware.org; spf=pass smtp.mailfrom=gmail.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=209.85.128.52"
        ],
        "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 4fhcnR31SDz1yFp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 08:47:21 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 564484BAD146\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 21:47:13 +0000 (GMT)",
            "from mail-wm1-f52.google.com (mail-wm1-f52.google.com\n [209.85.128.52])\n by sourceware.org (Postfix) with ESMTPS id 5D3344BA540B\n for <gcc-patches@gcc.gnu.org>; Thu, 26 Mar 2026 21:46:12 +0000 (GMT)",
            "by mail-wm1-f52.google.com with SMTP id\n 5b1f17b1804b1-4836d9d54f6so1202725e9.1\n for <gcc-patches@gcc.gnu.org>; Thu, 26 Mar 2026 14:46:12 -0700 (PDT)",
            "from ?IPV6:2a01:e0a:1dc:b1c0:4ff8:e49c:d3a0:f737?\n ([2a01:e0a:1dc:b1c0:4ff8:e49c:d3a0:f737])\n by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43b919e265csm11183095f8f.32.2026.03.26.14.46.10\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 26 Mar 2026 14:46:10 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 564484BAD146",
            "OpenDKIM Filter v2.11.0 sourceware.org 5D3344BA540B"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 5D3344BA540B",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 5D3344BA540B",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774561572; cv=none;\n b=jxsfl8GuRDPQiV3ad1iUEDLAGpxeEfIiaybQ82UbTg7WSFCj5W+ZCi6KP7jbLyggbZp+kTv0P/JzzKAL0I7YUD7xcK34qCpJ1tKLhky/6ES3UK1JN1HBkES8GAqizubHiPeHx1gXVa/SugWgRqq+D7x2zti9k5njGhTj+rTZRFE=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774561572; c=relaxed/simple;\n bh=xwc3UgV/f+PLRtbjYzd1xC8wZoCx/Q1xi5IZGo8EF00=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject;\n b=wBXRZyJByseHeV513BHkXB+Ilh7bCwPWyb4Fr6EgN11uKQX3TupnyaImLXofS3iH23jEYnvCWAu4bO5tDaE9RPEMEN63AGGH7rf6p/SZVPo19Z4ED/fei+aBIX3PajYPOCb9XqwRfwvagpjZe+CZwwDgw978my6NEnFCU+oGPaA=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774561571; x=1775166371; darn=gcc.gnu.org;\n h=subject:from:cc:to:content-language:user-agent:mime-version:date\n :message-id:from:to:cc:subject:date:message-id:reply-to;\n bh=xxuJLnQU2GgdkNiFzRMaOvMfmJi3rnIQeQwpF2pTPxA=;\n b=Fmm+Jad90QF/xVIho00BKWXhlQOSj3A4nVfkek4JaEkvIjcxz/4K6pleSKvXd+Y1nh\n Kfu9S6FKcOyC8QPEIbrHSs8LsttQU5p9Ip9rHh/2CnOtXUY94KhRWIRSsAUG0ah1W7Ce\n fAYXvwgXB7gWkDCo0XglZcHPLTS0R2R1ypANNXJQk57w8FNaEf6W9gUumSn7BKLSbdjo\n NuWHjioYG29PKVSKw1y+y/87xcb/oA5iy5FAPp9+NiL70C9IYs5bJAdejFDubqvvMdi0\n cfrYHHi5WR/hBMvrFwM2GPP6AJUgl4pievV+6dSQUApMWCa+E6e/PtVWcrkjiQHGm52N\n sPEg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774561571; x=1775166371;\n h=subject:from:cc:to:content-language:user-agent:mime-version:date\n :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=xxuJLnQU2GgdkNiFzRMaOvMfmJi3rnIQeQwpF2pTPxA=;\n b=GyM8urEDbQs2xZ9QE5vi89tjoLozdrJB8Er1xPDRKyhDEINoZS8GE9rRI0JDIUdMBg\n f3Gblhp/LIr9/D/bvorifGBuvoUr0ByeR1zYp6Ufojf+7prz5JuX+7nXkZYKlT/W/ZRC\n 1FZVgWiRkBJaGWHIG+n7RyP7AXUwz1LkQp2Stq+IOsCpu1uyL5We52H2/zcXGt/WoU8i\n 3b74k3Pt97DT7GRRbdtWug9b4vqgKcViBXH4+BqwRnNCPe4i/2Fi6fd7eQNZOxiICW9R\n 2MAJpCpdMI3oiqqyTXhRCgpzY3DKzcaPq3/43WIkZ3EqaePBBZ2tG6gjSDyUfdBY1ky8\n hdWQ==",
        "X-Gm-Message-State": "AOJu0Yyidknqlsfr19l0KplDZopMJi2C5teAmNWoy5F8rzVpYbQgEL0s\n VlY4iL7jtwlyJAe/FDfcwTwBVkWklIetZVND+x6o+g/Zxy6dK/ayO5qn0fJpWg==",
        "X-Gm-Gg": "ATEYQzzzLuc/9sPh45Ma535LEhq/rCmvXVFZ1DE4XFqyKqzmFLR4Sw9HkOSTBcXeyE4\n fHdWldFgEK0NFNpK3vQdBQJ6M5wbIn+8kqGHRHjtfBP48v01hzNtte09FQsuJBCCFse3LAMjvW3\n 8O8LheW16v+TdNAcjXBOAaoXy4wPtcudOe3MvEpnvlD/vHPY38Ya/mA1oabtBg3s6Z4HMK54SGY\n 8M1ih9oPEU88eJcOwPcJQWKAhwI2cFBQ8wtc40KIaSLbqLE+ZEX98UiztSLhMfDDcEjH/Qu/YqO\n +A+zHwGfy8ibMYYBijOQwdrvXnQNu0YVqRAhrG6ssazhXT7vj28x5smYPiqw8y4mWe7gFRcnzOr\n 9RtzNN9KjUJXfl7sVfiAeekJ+HueM6TIAR/HW519JBR9PI/uX4C05eVyLicHsVH3brN9AOyM0/i\n s44J4uw2Ztj46+ee+DAiCpgpz33ysxFFAA8RWhYLRL4iJXBFKWuG/Z3BsRGlS/0TJtLHO1",
        "X-Received": "by 2002:a05:600c:1c27:b0:486:b967:5c9b with SMTP id\n 5b1f17b1804b1-487282be071mr2169225e9.3.1774561571006;\n Thu, 26 Mar 2026 14:46:11 -0700 (PDT)",
        "Content-Type": "multipart/mixed; boundary=\"------------6SvPtiio2oaHjCsUelFgtKvn\"",
        "Message-ID": "<7ec8b523-1fb1-4f5c-bcde-940fb31b1a65@gmail.com>",
        "Date": "Thu, 26 Mar 2026 22:46:09 +0100",
        "MIME-Version": "1.0",
        "User-Agent": "Mozilla Thunderbird",
        "Content-Language": "en-US",
        "To": "libstdc++ <libstdc++@gcc.gnu.org>",
        "Cc": "gcc-patches <gcc-patches@gcc.gnu.org>",
        "From": "=?utf-8?q?Fran=C3=A7ois_Dumont?= <frs.dumont@gmail.com>",
        "Subject": "[PATCH][_GLIBCXX_DEBUG] Fix COW basic_string checks",
        "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": "Hi\n\nHere is the fix to the current COW basic_string issue now that I've \nremoved the DR438 _GLIBCXX_DEBUG code.\n\nI've also revisited the location of the debug checks so that for example \non the append_neg.cc test case we have this assertion message with the \ncxx11 string:\n\nIn function:\n     constexpr std::cxx11::basic_string<_CharT, _Traits, _Alloc>& std::\n     cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(const_iterator,\n     const_iterator, _InputIterator, _InputIterator) [with _InputIterator =\n\nso refering to the replace method. Whereas on the cow string:\n\nIn function:\n     std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT,\n     _Traits, _Alloc>::append(_InputIterator, _InputIterator) [with\n     _InputIterator = gnu_debug::_Safe_iterator<gnu_cxx::\n\nI plan to do something similar on cxx11 string. Let me know if useless.\n\n     libstdc++: [_GLIBCXX_DEBUG] Fix COW basic_string checks\n\n     In revision 698a6af5dcbae5d935bcda8a461dea8458c658dc the \n_GLIBCXX_DEBUG code\n     for the Library Defect 438 has been removed for C++11 and after. \nBut the COW\n     basic_string implementation used when _GLIBCXX_USE_CXX11_ABI=0 was \nmissing\n     the _RequireInputIter constraint on a number method resulting in \ntest failures.\n\n     _RequireInputIter is now added where necessary. And _GLIBCXX_DEBUG \nchecks have\n     been added at the right place to benefit from more accurate \nassertion messages.\n\n     libstdc++-v3/ChangeLog:\n\n             * include/bits/cow_string.h [__cplusplus >= 201103L]\n             (basic_string(_InputIte, _InputIte, const _Alloc&)): Add \n_RequireInputIter\n             template parameter. Add \n__glibcxx_requires_valid_constructor_range call.\n             (_M_replace_dispatch(_InputIte, _InputIte): New.\n             (_M_replace_dispatch(iterator, iterator, _InputIte, \n_InputIte): New.\n             [__cplusplus >= 201103L]\n             (append(_InputIte, _InputIte)): Add _RequireInputIter \ntemplate parameter.\n             Add __glibcxx_requires_valid_constructor_range call. Use \nlatter.\n             (insert(iterator, _InputIte, _InputIte)): Likewise.\n             (replace(iterator, iterator, _InputIte, _InputIte)): Likewise.\n             (_S_construct(_InputIte, _InputIte, const _Alloc&)):  Add \n_RequireInputIter\n             template parameter.\n             * include/debug/debug.h \n(__glibcxx_requires_valid_construtor_range): New.\n             * testsuite/21_strings/basic_string/debug/append_neg.cc: \nNew test case.\n             * testsuite/21_strings/basic_string/debug/assign_neg.cc: \nNew test case.\n             * testsuite/21_strings/basic_string/debug/construct_neg.cc: \nNew test case.\n             * testsuite/21_strings/basic_string/debug/insert_neg.cc: \nNew test case.\n             * testsuite/21_strings/basic_string/debug/replace_neg.cc: \nNew test case.\n\nTested under Linux x64_86.\n\nOk to commit ?\n\nFrançois",
    "diff": "diff --git a/libstdc++-v3/include/bits/cow_string.h b/libstdc++-v3/include/bits/cow_string.h\nindex 6cf00224372..140afd03c43 100644\n--- a/libstdc++-v3/include/bits/cow_string.h\n+++ b/libstdc++-v3/include/bits/cow_string.h\n@@ -721,10 +721,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n        *  @param  __end  End of range.\n        *  @param  __a  Allocator to use (default is default allocator).\n        */\n-      template<class _InputIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InputIterator,\n+\t       typename = std::_RequireInputIter<_InputIterator>>\n+#else\n+      template<typename _InputIterator>\n+#endif\n \tbasic_string(_InputIterator __beg, _InputIterator __end,\n \t\t     const _Alloc& __a = _Alloc())\n-\t: _M_dataplus(_S_construct(__beg, __end, __a), __a)\n+\t: _M_dataplus(_S_construct(\n+\t  __glibcxx_requires_valid_constructor_range(__beg, __end),\n+\t  __end, __a), __a)\n \t{ }\n \n #ifdef __glibcxx_string_view // >= C++17\n@@ -1391,10 +1398,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n        *\n        *  Appends characters in the range [__first,__last) to this string.\n        */\n-      template<class _InputIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InputIterator,\n+\t       typename = std::_RequireInputIter<_InputIterator>>\n+#else\n+      template<typename _InputIterator>\n+#endif\n \tbasic_string&\n \tappend(_InputIterator __first, _InputIterator __last)\n-\t{ return this->replace(_M_iend(), _M_iend(), __first, __last); }\n+\t{\n+\t  __glibcxx_requires_valid_range(__first, __last);\n+\t  return _M_replace_dispatch(__first, __last);\n+\t}\n \n #ifdef __glibcxx_string_view // >= C++17\n       /**\n@@ -1538,10 +1553,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n        *\n        *  Sets value of string to characters in the range [__first,__last).\n       */\n-      template<class _InputIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InputIterator,\n+\t       typename = std::_RequireInputIter<_InputIterator>>\n+#else\n+      template<typename _InputIterator>\n+#endif\n \tbasic_string&\n \tassign(_InputIterator __first, _InputIterator __last)\n-\t{ return this->replace(_M_ibegin(), _M_iend(), __first, __last); }\n+\t{\n+\t  __glibcxx_requires_valid_range(__first, __last);\n+\t  return _M_replace_dispatch(__first, __last);\n+\t}\n \n #if __glibcxx_containers_ranges // C++ >= 23\n       /**\n@@ -1631,10 +1654,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n        *  length_error is thrown.  The value of the string doesn't\n        *  change if an error is thrown.\n       */\n-      template<class _InputIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InputIterator,\n+\t       typename = std::_RequireInputIter<_InputIterator>>\n+#else\n+      template<typename _InputIterator>\n+#endif\n \tvoid\n \tinsert(iterator __p, _InputIterator __beg, _InputIterator __end)\n-\t{ this->replace(__p, __p, __beg, __end); }\n+\t{\n+\t  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __p && __p <= _M_iend());\n+\t  __glibcxx_requires_valid_range(__beg, __end);\n+\t  _M_replace_dispatch(__p, __p, __beg, __end);\n+\t}\n \n #if __glibcxx_containers_ranges // C++ >= 23\n       /**\n@@ -2117,7 +2149,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n        *  The value of the string doesn't change if an error is\n        *  thrown.\n       */\n-      template<class _InputIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InputIterator,\n+\t       typename = std::_RequireInputIter<_InputIterator>>\n+#else\n+      template<typename _InputIterator>\n+#endif\n \tbasic_string&\n \treplace(iterator __i1, iterator __i2,\n \t\t_InputIterator __k1, _InputIterator __k2)\n@@ -2125,8 +2162,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n \t  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2\n \t\t\t\t   && __i2 <= _M_iend());\n \t  __glibcxx_requires_valid_range(__k1, __k2);\n-\t  typedef typename std::__is_integer<_InputIterator>::__type _Integral;\n-\t  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());\n+\t  return _M_replace_dispatch(__i1, __i2, __k1, __k2);\n \t}\n \n       // Specializations for the common case of pointer and iterator:\n@@ -2270,17 +2306,37 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n #endif // C++17\n \n     private:\n+#if __cplusplus < 201103L\n       template<class _Integer>\n \tbasic_string&\n \t_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,\n \t\t\t    _Integer __val, __true_type)\n \t{ return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }\n+#endif\n \n       template<class _InputIterator>\n \tbasic_string&\n \t_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,\n \t\t\t    _InputIterator __k2, __false_type);\n \n+      template<class _InputIterator>\n+\tbasic_string&\n+\t_M_replace_dispatch(_InputIterator __first, _InputIterator __last)\n+\t{ return _M_replace_dispatch(_M_ibegin(), _M_iend(), __first, __last); }\n+\n+      template<class _InputIterator>\n+\tbasic_string&\n+\t_M_replace_dispatch(iterator __i1, iterator __i2,\n+\t\t\t    _InputIterator __first, _InputIterator __last)\n+\t{\n+#if __cplusplus >= 201103L\n+\t  using _Integral = std::__false_type;\n+#else\n+\t  typedef typename std::__is_integer<_InputIterator>::__type _Integral;\n+#endif\n+\t  return _M_replace_dispatch(__i1, __i2, __first, __last, _Integral());\n+\t}\n+\n       basic_string&\n       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,\n \t\t     _CharT __c);\n@@ -2300,6 +2356,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n \t  return _S_construct(__beg, __end, __a, _Tag());\n \t}\n \n+#if __cplusplus < 201103L\n       // _GLIBCXX_RESOLVE_LIB_DEFECTS\n       // 438. Ambiguity in the \"do the right thing\" clause\n       template<class _Integer>\n@@ -2312,12 +2369,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n       static _CharT*\n       _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)\n       { return _S_construct(__req, __c, __a); }\n+#endif\n \n-      template<class _InIterator>\n+#if __cplusplus >= 201103L\n+      template<typename _InIterator,\n+\t       typename = std::_RequireInputIter<_InIterator>>\n+#else\n+      template<typename _InIterator>\n+#endif\n \tstatic _CharT*\n \t_S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)\n \t{\n+#if __cplusplus >= 201103L\n+\t  using _Integral = std::__false_type;\n+#else\n \t  typedef typename std::__is_integer<_InIterator>::__type _Integral;\n+#endif\n \t  return _S_construct_aux(__beg, __end, __a, _Integral());\n \t}\n \ndiff --git a/libstdc++-v3/include/debug/debug.h b/libstdc++-v3/include/debug/debug.h\nindex 5604f98e4d3..aabb9af2271 100644\n--- a/libstdc++-v3/include/debug/debug.h\n+++ b/libstdc++-v3/include/debug/debug.h\n@@ -65,6 +65,8 @@ namespace __gnu_debug\n \n # define __glibcxx_requires_cond(_Cond,_Msg)\n # define __glibcxx_requires_valid_range(_First,_Last)\n+# define __glibcxx_requires_valid_constructor_range(_First,_Last) \\\n+  _First\n # define __glibcxx_requires_can_increment(_First,_Size)\n # define __glibcxx_requires_can_increment_range(_First1,_Last1,_First2)\n # define __glibcxx_requires_can_decrement_range(_First1,_Last1,_First2)\n@@ -92,6 +94,8 @@ namespace __gnu_debug\n # define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg)\n # define __glibcxx_requires_valid_range(_First,_Last)\t\\\n   __glibcxx_check_valid_range(_First,_Last)\n+# define __glibcxx_requires_valid_constructor_range(_First,_Last) \\\n+  __glibcxx_check_valid_constructor_range(_First,_Last)\n # define __glibcxx_requires_can_increment(_First,_Size)\t\\\n   __glibcxx_check_can_increment(_First,_Size)\n # define __glibcxx_requires_can_increment_range(_First1,_Last1,_First2)\t\\\n",
    "prefixes": [
        "_GLIBCXX_DEBUG"
    ]
}