[{"id":3675497,"web_url":"http://patchwork.ozlabs.org/comment/3675497/","msgid":"<CAH6eHdT_kmHottJ8p-f-5OztivM6soLAeKy7rVPAE0GFskDRsA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-09T20:21:12","subject":"Re: [PATCH] libstdc++: Remove span constructor from initializer_list.","submitter":{"id":4329,"url":"http://patchwork.ozlabs.org/api/people/4329/","name":"Jonathan Wakely","email":"jwakely.gcc@gmail.com"},"content":"On Thu, 9 Apr 2026, 14:30 Tomasz Kamiński, <tkaminsk@redhat.com> wrote:\n\n> Following LWG4520 resolution from paper\n> P4144R1 Remove span’s initializer_list constructor for C++26.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         * include/bits/version.def (span_initializer_list): Remove.\n>         * include/bits/version.h: Regenerate.\n>         * include/std/span (span::span(initializer_list<value_type>)):\n>         Remove.\n>         * testsuite/23_containers/span/init_list_cons.cc: Removed.\n>         * testsuite/23_containers/span/init_list_cons_neg.cc: Removed.\n>         * testsuite/23_containers/inplace_vector/copy.cc: Replace span\n>         with initializer_list in eq helper.\n>         * testsuite/23_containers/inplace_vector/erasure.cc: Likewise.\n>         * testsuite/23_containers/inplace_vector/move.cc: Likewise.\n> ---\n> Of course I have managed to use this constructor in inplace_vector test,\n> replaced it with initializer_list.\n>\n\nHeh :)\n\n\n> Tested on x86_64-linux. OK for trunk?\n>\n\nOK\n\n\n\n>  libstdc++-v3/include/bits/version.def         |  8 ---\n>  libstdc++-v3/include/bits/version.h           | 10 ---\n>  libstdc++-v3/include/std/span                 | 16 +----\n>  .../23_containers/inplace_vector/copy.cc      |  2 +-\n>  .../23_containers/inplace_vector/erasure.cc   | 11 +---\n>  .../23_containers/inplace_vector/move.cc      |  2 +-\n>  .../23_containers/span/init_list_cons.cc      | 65 -------------------\n>  .../23_containers/span/init_list_cons_neg.cc  | 36 ----------\n>  8 files changed, 6 insertions(+), 144 deletions(-)\n>  delete mode 100644\n> libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc\n>  delete mode 100644\n> libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc\n>\n> diff --git a/libstdc++-v3/include/bits/version.def\n> b/libstdc++-v3/include/bits/version.def\n> index cfb90533ce4..bdc282ab123 100644\n> --- a/libstdc++-v3/include/bits/version.def\n> +++ b/libstdc++-v3/include/bits/version.def\n> @@ -2168,14 +2168,6 @@ ftms = {\n>    };\n>  };\n>\n> -ftms = {\n> -  name = span_initializer_list;\n> -  values = {\n> -    v = 202311;\n> -    cxxmin = 26;\n> -  };\n> -};\n> -\n>  ftms = {\n>    name = text_encoding;\n>    values = {\n> diff --git a/libstdc++-v3/include/bits/version.h\n> b/libstdc++-v3/include/bits/version.h\n> index 22dd31b9d32..1278725cfa2 100644\n> --- a/libstdc++-v3/include/bits/version.h\n> +++ b/libstdc++-v3/include/bits/version.h\n> @@ -2426,16 +2426,6 @@\n>  #endif /* !defined(__cpp_lib_saturation_arithmetic) */\n>  #undef __glibcxx_want_saturation_arithmetic\n>\n> -#if !defined(__cpp_lib_span_initializer_list)\n> -# if (__cplusplus >  202302L)\n> -#  define __glibcxx_span_initializer_list 202311L\n> -#  if defined(__glibcxx_want_all) ||\n> defined(__glibcxx_want_span_initializer_list)\n> -#   define __cpp_lib_span_initializer_list 202311L\n> -#  endif\n> -# endif\n> -#endif /* !defined(__cpp_lib_span_initializer_list) */\n> -#undef __glibcxx_want_span_initializer_list\n> -\n>  #if !defined(__cpp_lib_text_encoding)\n>  # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED &&\n> (_GLIBCXX_USE_NL_LANGINFO_L)\n>  #  define __glibcxx_text_encoding 202306L\n> diff --git a/libstdc++-v3/include/std/span b/libstdc++-v3/include/std/span\n> index a2f338449c8..a5f5bf48f90 100644\n> --- a/libstdc++-v3/include/std/span\n> +++ b/libstdc++-v3/include/std/span\n> @@ -47,9 +47,7 @@\n>  #include <cstddef>\n>  #include <bits/stl_iterator.h>\n>  #include <bits/ranges_base.h>\n> -#ifdef __cpp_lib_span_initializer_list\n> -# include <initializer_list>\n> -#endif\n> +\n>  namespace std _GLIBCXX_VISIBILITY(default)\n>  {\n>  _GLIBCXX_BEGIN_NAMESPACE_VERSION\n> @@ -232,18 +230,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>         : _M_ptr(ranges::data(__range)), _M_extent(ranges::size(__range))\n>         { }\n>\n> -#if __cpp_lib_span_initializer_list >= 202311L // >= C++26\n> -#pragma GCC diagnostic push\n> -#pragma GCC diagnostic ignored \"-Winit-list-lifetime\"\n> -      constexpr\n> -      explicit(extent != dynamic_extent)\n> -      span(initializer_list<value_type> __il)\n> -      requires (is_const_v<_Type>)\n> -      : _M_ptr(__il.begin()), _M_extent(__il.size())\n> -      { }\n> -#pragma GCC diagnostic pop\n> -#endif\n> -\n>        constexpr\n>        span(const span&) noexcept = default;\n>\n> diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc\n> b/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc\n> index 917eebd80f7..11260c63313 100644\n> --- a/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc\n> +++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc\n> @@ -138,7 +138,7 @@\n> static_assert(std::is_trivially_copy_assignable_v<std::inplace_vector<Z,\n> 0>>);\n>\n>  template<typename T, size_t N>\n>  constexpr bool\n> -eq(const std::inplace_vector<T, N>& s, std::span<const T> o)\n> +eq(const std::inplace_vector<T, N>& s,\n> std::initializer_list<std::type_identity_t<T>> o)\n>  { return std::ranges::equal(s, o); }\n>\n>  constexpr void\n> diff --git\n> a/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc\n> b/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc\n> index 8fb56e90623..a019dc0a1f1 100644\n> --- a/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc\n> +++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc\n> @@ -1,18 +1,13 @@\n>  // { dg-do run { target c++26 } }\n>\n>  #include <inplace_vector>\n> +#include <ranges>\n>  #include <testsuite_hooks.h>\n> -#include <span>\n>\n>  template<typename T, size_t N>\n>  constexpr bool\n> -eq(const std::inplace_vector<T, N>& l, std::span<const T> r) {\n> -  if (l.size() != r.size())\n> -    return false;\n> -  for (auto i = 0u; i < l.size(); ++i)\n> -    if (l[i] != r[i])\n> -      return false;\n> -  return true;\n> +eq(const std::inplace_vector<T, N>& l,\n> std::initializer_list<std::type_identity_t<T>> r) {\n> +  return std::ranges::equal(l, r);\n>  };\n>\n>  constexpr void\n> diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc\n> b/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc\n> index e8703e027fe..8b5c3e9f247 100644\n> --- a/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc\n> +++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc\n> @@ -177,7 +177,7 @@\n> static_assert(std::is_nothrow_swappable_v<std::inplace_vector<Z, 0>>);\n>\n>  template<typename T, size_t N>\n>  constexpr bool\n> -eq(const std::inplace_vector<T, N>& s, std::span<const T> o)\n> +eq(const std::inplace_vector<T, N>& s,\n> std::initializer_list<std::type_identity_t<T>> o)\n>  { return std::ranges::equal(s, o); }\n>\n>  constexpr void\n> diff --git a/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc\n> b/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc\n> deleted file mode 100644\n> index 1dc30ab1a50..00000000000\n> --- a/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc\n> +++ /dev/null\n> @@ -1,65 +0,0 @@\n> -// { dg-do compile { target c++26 } }\n> -\n> -#include <span>\n> -#include <type_traits>\n> -\n> -#if !defined(__cpp_lib_span_initializer_list)\n> -# error \"__cpp_lib_span_initializer_list should be defined\"\n> -#elif __cpp_lib_span_initializer_list < 202311L\n> -# error \"Wrong value for __cpp_lib_span_initializer_list (should be >=\n> 202311L)\"\n> -#endif\n> -\n> -// Check the constraint on the initializer_list constructor\n> -static_assert( std::is_const_v<std::span<const int>::element_type>);\n> -static_assert(!std::is_const_v<std::span<      int>::element_type>);\n> -\n> -static_assert( std::is_constructible_v<std::span<const int    >,\n> std::initializer_list<      int>>);\n> -static_assert( std::is_constructible_v<std::span<const int    >,\n> std::initializer_list<const int>>);\n> -static_assert( std::is_constructible_v<std::span<const int, 42>,\n> std::initializer_list<      int>>);\n> -static_assert( std::is_constructible_v<std::span<const int, 42>,\n> std::initializer_list<const int>>);\n> -static_assert(!std::is_constructible_v<std::span<      int    >,\n> std::initializer_list<      int>>);\n> -static_assert(!std::is_constructible_v<std::span<      int    >,\n> std::initializer_list<const int>>);\n> -static_assert(!std::is_constructible_v<std::span<      int, 42>,\n> std::initializer_list<      int>>);\n> -static_assert(!std::is_constructible_v<std::span<      int, 42>,\n> std::initializer_list<const int>>);\n> -\n> -// Check the explicit-ness on the initializer_list constructor\n> -static_assert( std::is_convertible_v<std::initializer_list<      int>,\n> std::span<const int    >>);\n> -static_assert( std::is_convertible_v<std::initializer_list<const int>,\n> std::span<const int    >>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<      int>,\n> std::span<const int, 42>>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<const int>,\n> std::span<const int, 42>>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<      int>,\n> std::span<      int    >>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<const int>,\n> std::span<      int    >>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<      int>,\n> std::span<      int, 42>>);\n> -static_assert(!std::is_convertible_v<std::initializer_list<const int>,\n> std::span<      int, 42>>);\n> -\n> -constexpr size_t fun1(std::span<const int> s)\n> -{\n> -  return s.size();\n> -}\n> -\n> -static_assert(fun1({}) == 0);\n> -static_assert(fun1({1, 2, 3}) == 3);\n> -static_assert(fun1(std::initializer_list<int>{1, 2, 3}) == 3);\n> -\n> -// Stress-test array->pointer decays\n> -struct decayer {\n> -  constexpr decayer() = default;\n> -  constexpr decayer(decayer *) {}\n> -};\n> -\n> -constexpr size_t fun2(std::span<const decayer> s)\n> -{\n> -  return s.size();\n> -}\n> -\n> -void test01()\n> -{\n> -  int intArray[42];\n> -  static_assert(fun1(intArray) == 42);\n> -\n> -  decayer decArray[42];\n> -  static_assert(fun2(decArray) == 42);\n> -  static_assert(fun2({decArray}) == 1); // decayer[] -> decayer* ->\n> decayer(decayer*) -> init_list<decayer> of 1 element\n> -  static_assert(fun2({decArray, decArray + 42}) == 2); // does not select\n> span(iterator, iterator)\n> -  static_assert(fun2({decArray, decArray, decArray}) == 3);\n> -}\n> diff --git\n> a/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc\n> b/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc\n> deleted file mode 100644\n> index 6b78156ad5d..00000000000\n> --- a/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc\n> +++ /dev/null\n> @@ -1,36 +0,0 @@\n> -// { dg-do run { target { c++20 && c++23_down } } }\n> -// { dg-do compile { target c++26 } }\n> -\n> -#include <span>\n> -#include <utility>\n> -\n> -#include <testsuite_hooks.h>\n> -\n> -struct Any {\n> -  constexpr Any() { }\n> -  template<typename T> constexpr Any(T) { }\n> -};\n> -\n> -// Examples from P2447R4\n> -void one(std::pair<int, int>) {}\n> -void one(std::span<const int>) {}\n> -void two(std::span<const int, 2>) {}\n> -constexpr std::size_t three(std::span<void * const> v) { return v.size();\n> }\n> -constexpr std::size_t four(std::span<const Any> v) { return v.size(); }\n> -\n> -void *array3[10];\n> -Any array4[10];\n> -\n> -int main()\n> -{\n> -  one({1, 2}); // { dg-error \"call of overloaded\" \"should be ambiguous\n> with the one(std::pair) overload\" { target c++26 } }\n> -  two({{1, 2}}); // { dg-error \"would use explicit constructor\" \"should\n> prefer the initializer_list constructor, which is explicit\" { target c++26\n> } }\n> -\n> -#if __cpp_lib_span_initializer_list\n> -  static_assert(three({array3, 0}) == 2);\n> -  static_assert(four({array4, array4 + 10}) == 2);\n> -#else\n> -  static_assert(three({array3, 0}) == 0);\n> -  static_assert(four({array4, array4 + 10}) == 10);\n> -#endif\n> -}\n> --\n> 2.53.0\n>\n>","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=KXYqj6JH;\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=KXYqj6JH","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=pass smtp.remote-ip=209.85.208.181"],"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 4fsBDl10ZGz1yHG\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 06:22:15 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 25F014BA2E1B\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Apr 2026 20:22:13 +0000 (GMT)","from mail-lj1-f181.google.com (mail-lj1-f181.google.com\n [209.85.208.181])\n by sourceware.org (Postfix) with ESMTPS id 10F044BA23C3\n for <gcc-patches@gcc.gnu.org>; Thu,  9 Apr 2026 20:21:27 +0000 (GMT)","by mail-lj1-f181.google.com with SMTP id\n 38308e7fff4ca-38ccde812ecso13450091fa.0\n for <gcc-patches@gcc.gnu.org>; Thu, 09 Apr 2026 13:21:26 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 25F014BA2E1B","OpenDKIM Filter v2.11.0 sourceware.org 10F044BA23C3"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 10F044BA23C3","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 10F044BA23C3","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775766087; cv=pass;\n b=oVKMiE0UbSfy1Sa9GGKgak9N3DKSurfQIXnwNhYuF7/PFNsil22WqzmfzjanQhhQPZl4n5W/HOhapwMcko/TqvGCFSW02qQNusxh2mR/PDkvaB1vqyq9TUF1C8z/otPJcU/em7xkREUXKf/bUsqxxaP2+ufK+vUbt0/pDGf3h9w=","i=1; a=rsa-sha256; t=1775766086; cv=none;\n d=google.com; s=arc-20240605;\n b=JbiWLZZX+cQ30/npatFGVIVUgdxewrcXT3Ql1DB96wXkDHu2KYvWBmSukjvdUzmoRs\n TgnMCOoVeL1bP950aGNPQ2W2XyPxpKcYullaV9dvTSaDXHu2lJQT2W3LgrG7ieTQkhL9\n 0SQxT9uXL6yU2xMb3Po02wl+JhbK3OIvX6mHpCgUCUsolRLPqnin+io7QzCcpPGEipI0\n Snde283gIVIFUi5z9jV1gNaiHsWhk+sgZ7waVozJDuUdcVzqPy3uGRn9DiOKG7pdCgWS\n iBFOe1IkY3QfNUzKmnyTTFeLBBqH5BogKS4b8GtaAeFM+bMhqynadYxc3hprBeMMFSQp\n VWTA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775766087; c=relaxed/simple;\n bh=S3LcKq8XMNcibDgPKZzfE6+vpR+hzEhdRRqLGeMbglc=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=PHvZLvimal54hIp/GHROzUw/KL0q5wQfHJYS5C8Q/tyxuumguFXAmAAzWwr/VtvM9FvoN6JPX8DP4YqalsUW+b94SRpUJf8iR37KnofeZI+otyZzTTyOrOBOPPFkwiLypz7LLz450GadrJhnwDIRhRRmBTw1e/aSQZ7NrLTTzxA=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=+IFLOq887pMY/OOaTRUiJrvQj55VjwFbhtYwUheEEOM=;\n fh=Zcy7LdPRKX/g1Trqo463E6LgznCAUwKhdyRpnIem+ZA=;\n b=V7VRnoNAY3J412YNPIgSEJ5iq08oBzv84PZ0jiOY8vvQcAUhkbLRqezpDBgM3UQchY\n ijaTf+9kNtmk25B0WL2P26lhFRkzopWwXflDo19jgr5FcgOjnHdjYchjH/RcQQHZqsxM\n 51yuGt3x0Oq/IVevdwYKs75a8tR8w51pBX6lwEW7ImnePnUhxsZe2vQ0mpvW2ZGvENMz\n PQsfvHIcJiT92wxdtm0ceR13/avZ/f6SUmciZeeyPX3lqAZ5pQRaLZRi9DokI6QxbNRc\n ebqxr5uR3AYn18sgKWuGNSDv6sqXLgAa9Ma5r2x87vD3xBVuHBAb7IRSkButiDpBFtZB\n ly0g==; darn=gcc.gnu.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775766086; x=1776370886; darn=gcc.gnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=+IFLOq887pMY/OOaTRUiJrvQj55VjwFbhtYwUheEEOM=;\n b=KXYqj6JHtMmjvwkbgyRfyuxdm9PfekqsDd8UfM/WCYawXW6N+aVsomnYSN8ON9OWsn\n UrNAu4j1vMH+457+O73IG7rdo4GldCt7tabe9AsVW2esU5Sc4K2lRCITHd3QUQOz3qXa\n qZOTZB/sTgCAVl20I7drM5CtXo+QuHQLYIwSgxePPvMueb0BxirwOKsoQLVEL3OeBrAt\n eeO/A2uzT1C+A8+jlgDU2EVzpCWj5E/U/4cXBUXzwioEMXt1Jm6KAmdg8qZqVed3oYv1\n 2l7wX6miOpOk8I0oRZ3hetcvabPavVPjbTticf16iqnN1seKqOfOOrEx/+yoOT7H1WIS\n 3OJA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775766086; x=1776370886;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=+IFLOq887pMY/OOaTRUiJrvQj55VjwFbhtYwUheEEOM=;\n b=Vj9St+Gjybi0vz6CHKWlvhEWRCK/MQiWw2sMB0JwG61r4oCebw+qt2DfH9cNpTmZ7u\n OeZczXE7J7jo91sU3XXFi6tZDZ7tg9uWVVafpsLG+inn6kRdswKpcFUGVzNyVNRxGL6P\n Yu79fZtydl3LpPD51k/YO9lPJ/sVbN35f+WvEP9QK+cR+7iV25M4K/FEBJmGgwLXAe55\n 4owh56lO5FYHH4Y9r23xG6uZhEG5cxEGd35abzdrAUXbwrNGnIrW0An7xsDl2xEvuMBh\n nSFpgLimzIMyjG+YNv77oBrJPrycB2Cyd5xVWoZSH2kJmANeqxziRRaVxjPglluJySXy\n FpNg==","X-Forwarded-Encrypted":"i=1;\n AJvYcCVdPCsyi927YbRB5/aEuhoP233pXGFqvsO9M8XhOzCtURWRKLL14WQg0ao0teWwF2ATwwtvbA1R0FHijw==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YzeNAeBmj4o1X2QD3c7LUOTuV68ChFECDllQyW2etF28oCN2LNR\n RhX+DlEhV0p7SIajG4J10PNkIeVohAa2TwA7Aknz+5WHyhQAiJUujhj2WP7ml5gxqdP4HwrC0JC\n k0FC0pKcn9oMc5pFUz7jZd2orycihNDthAQ==","X-Gm-Gg":"AeBDievzSIrVokMtkvuCt5CkFIZofd62zHA1vCg47VqHPHmR5hqDFERYIuuLtKkBntl\n VErfLqyYvMbmYE5rmaS2zvhLdBjfAHoPK9L1Bwp+vQRNDXWnNz+oYq0FD88sG0bSY7LQCLvCHKW\n r2wXweM3o19PQqHorWJklzHFA2jGt7XWUM6mex1zMzjFoQGgcMacRirGUB7tybCw/ABEFzww4nq\n FAMjqicAECfjIZkcAIVKXOq/0q2FENdTBRpXW1v9PyJu0y7vKPOtlS78AMkqYtHDOh1uWXEKSWB\n NZlOPslKJENdt27OWcJOHOWvvd7gtCxsGnFL3JLlh/KzAqPlXepRq+wrG7anC9w09/psdNN27Wn\n y3w==","X-Received":"by 2002:a2e:3214:0:b0:38b:e005:7fa0 with SMTP id\n 38308e7fff4ca-38e33d7eaeemr13049051fa.4.1775766085297; Thu, 09 Apr 2026\n 13:21:25 -0700 (PDT)","MIME-Version":"1.0","References":"<20260409132833.451634-1-tkaminsk@redhat.com>","In-Reply-To":"<20260409132833.451634-1-tkaminsk@redhat.com>","From":"Jonathan Wakely <jwakely.gcc@gmail.com>","Date":"Thu, 9 Apr 2026 21:21:12 +0100","X-Gm-Features":"AQROBzAE0uS2OqCQzZW0u6JTsOMdCXRqx0joOCZ-aV9O11RgRYB_7gYp6araqPs","Message-ID":"\n <CAH6eHdT_kmHottJ8p-f-5OztivM6soLAeKy7rVPAE0GFskDRsA@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Remove span constructor from initializer_list.","To":"=?utf-8?q?Tomasz_Kami=C5=84ski?= <tkaminsk@redhat.com>","Cc":"\"libstdc++\" <libstdc++@gcc.gnu.org>, gcc-patches <gcc-patches@gcc.gnu.org>","Content-Type":"multipart/alternative; boundary=\"000000000000b7eb8a064f0cc299\"","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"}}]