Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216601/?format=api
{ "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" ] }