[{"id":3677240,"web_url":"http://patchwork.ozlabs.org/comment/3677240/","msgid":"<CACb0b4=99WePcQD3UJtizLmb0m9THZMxk=y-YSVUSSKFp--2zg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-14T14:43:09","subject":"Re: [PATCH] libstdc++: Define __cpp_lib_stdbit_h and\n __cpp_lib_stdckdint_h feature test macros.","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Tue, 14 Apr 2026 at 15:39, Tomasz Kamiński <tkaminsk@redhat.com> wrote:\n>\n> This implements LWG4550: Need new feature test macros for <stdckdint.h>\n> and <stdbit.h>.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         * include/bits/version.def (stdbit_h, stdckdint_h): Define.\n>         * include/bits/version.h: Regenerate.\n>         * include/c_compatibility/stdbit.h (__cpp_lib_stdbit_h): Define\n>         and use it in guards.\n>         * include/c_compatibility/stdckdint.h (__cpp_lib_stdckdint_h):\n>         Define and use it in guards.\n> ---\n> Testing on x86_64-linux. Dedicated tests 20_util/stdbit* and 26_numerics/stdckint*\n> already passes, so valus seem correct.\n\nOK. We should backport this to GCC 15 at some point too.\n\n\n>\n>  libstdc++-v3/include/bits/version.def         | 16 +++++++++++++++\n>  libstdc++-v3/include/bits/version.h           | 20 +++++++++++++++++++\n>  libstdc++-v3/include/c_compatibility/stdbit.h |  8 ++++++--\n>  .../include/c_compatibility/stdckdint.h       |  8 ++++++--\n>  4 files changed, 48 insertions(+), 4 deletions(-)\n>\n> diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def\n> index 94fc1f85993..13dba4d6378 100644\n> --- a/libstdc++-v3/include/bits/version.def\n> +++ b/libstdc++-v3/include/bits/version.def\n> @@ -1871,6 +1871,22 @@ ftms = {\n>    };\n>  };\n>\n> +ftms = {\n> +  name = stdbit_h;\n> +  values = {\n> +    v = 202603;\n> +    cxxmin = 26;\n> +  };\n> +};\n> +\n> +ftms = {\n> +  name = stdckdint_h;\n> +  values = {\n> +    v = 202603;\n> +    cxxmin = 26;\n> +  };\n> +};\n> +\n>  ftms = {\n>    name = adaptor_iterator_pair_constructor;\n>    values = {\n> diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h\n> index 402e67580eb..743f7e29fe2 100644\n> --- a/libstdc++-v3/include/bits/version.h\n> +++ b/libstdc++-v3/include/bits/version.h\n> @@ -2076,6 +2076,26 @@\n>  #endif /* !defined(__cpp_lib_stdatomic_h) */\n>  #undef __glibcxx_want_stdatomic_h\n>\n> +#if !defined(__cpp_lib_stdbit_h)\n> +# if (__cplusplus >  202302L)\n> +#  define __glibcxx_stdbit_h 202603L\n> +#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdbit_h)\n> +#   define __cpp_lib_stdbit_h 202603L\n> +#  endif\n> +# endif\n> +#endif /* !defined(__cpp_lib_stdbit_h) */\n> +#undef __glibcxx_want_stdbit_h\n> +\n> +#if !defined(__cpp_lib_stdckdint_h)\n> +# if (__cplusplus >  202302L)\n> +#  define __glibcxx_stdckdint_h 202603L\n> +#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdckdint_h)\n> +#   define __cpp_lib_stdckdint_h 202603L\n> +#  endif\n> +# endif\n> +#endif /* !defined(__cpp_lib_stdckdint_h) */\n> +#undef __glibcxx_want_stdckdint_h\n> +\n>  #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)\n>  # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED\n>  #  define __glibcxx_adaptor_iterator_pair_constructor 202106L\n> diff --git a/libstdc++-v3/include/c_compatibility/stdbit.h b/libstdc++-v3/include/c_compatibility/stdbit.h\n> index 1fb691e36c1..fa4ec0414c6 100644\n> --- a/libstdc++-v3/include/c_compatibility/stdbit.h\n> +++ b/libstdc++-v3/include/c_compatibility/stdbit.h\n> @@ -29,7 +29,11 @@\n>  #ifndef _GLIBCXX_STDBIT_H\n>  #define _GLIBCXX_STDBIT_H\n>\n> -#if __cplusplus > 202302L\n> +#define __glibcxx_want_stdbit_h\n> +#include <bits/version.h>\n> +\n> +#ifdef __cpp_lib_stdbit_h // C++ >= 26\n> +\n>  #include <bit>\n>\n>  #define __STDC_VERSION_STDBIT_H__ 202311L\n> @@ -577,6 +581,6 @@ _GLIBCXX_STDBIT_FUNC(stdc_bit_floor);\n>  _GLIBCXX_STDBIT_FUNC(stdc_bit_ceil);\n>  #undef _GLIBCXX_STDBIT_FUNC\n>  #endif // !DOXYGEN\n> -#endif // C++26\n> +#endif // __cpp_lib_stdbit_h\n>\n>  #endif // _GLIBCXX_STDBIT_H\n> diff --git a/libstdc++-v3/include/c_compatibility/stdckdint.h b/libstdc++-v3/include/c_compatibility/stdckdint.h\n> index 5bdf4dc7b24..0f0b30cc899 100644\n> --- a/libstdc++-v3/include/c_compatibility/stdckdint.h\n> +++ b/libstdc++-v3/include/c_compatibility/stdckdint.h\n> @@ -29,7 +29,11 @@\n>  #ifndef _GLIBCXX_STDCKDINT_H\n>  #define _GLIBCXX_STDCKDINT_H\n>\n> -#if __cplusplus > 202302L\n> +#define __glibcxx_want_stdckdint_h\n> +#include <bits/version.h>\n> +\n> +#ifdef __cpp_lib_stdckdint_h // C++ >= 26\n> +\n>  #include <type_traits>\n>  #include <concepts>\n>\n> @@ -96,6 +100,6 @@ using __gnu_cxx::ckd_sub;\n>  using __gnu_cxx::ckd_mul;\n>  #endif\n>\n> -#endif // C++26\n> +#endif // __cpp_lib_stdckdint_h\n>\n>  #endif // _GLIBCXX_STDCKDINT_H\n> --\n> 2.53.0\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 (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=WTX47dt7;\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=WTX47dt7","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 4fw6V73WcJz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 00:43:59 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 62D0C4BA2E07\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 14:43:57 +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 D47CD4BA2E07\n for <gcc-patches@gcc.gnu.org>; Tue, 14 Apr 2026 14:43:28 +0000 (GMT)","from mail-yx1-f72.google.com (mail-yx1-f72.google.com\n [74.125.224.72]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-313-X1ZE9RoMNhWaDL3Q4gIEAg-1; Tue, 14 Apr 2026 10:43:27 -0400","by mail-yx1-f72.google.com with SMTP id\n 956f58d0204a3-650709ef300so3566194d50.0\n for <gcc-patches@gcc.gnu.org>; Tue, 14 Apr 2026 07:43:26 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 62D0C4BA2E07","OpenDKIM Filter v2.11.0 sourceware.org D47CD4BA2E07"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org D47CD4BA2E07","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org D47CD4BA2E07","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776177808; cv=none;\n b=pQ2rcJNoIkErEyRY8+AmXS6kRKAZC3jixe69UpLJ4+0I5zExCUqziBosG3puBql8TyKNCH8yio1NLituRPLQmrCNryvGCbEggd6c9cfMt+UjofUAIkrBwhiL9Lan21zH/RW7BTV7GepmHcdzEd+TtwPH8wgXASF51/QL2I4WxFs=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776177808; c=relaxed/simple;\n bh=LgbID+yrEZSMiGfxc8gao4mZLfZluc6ZknGJKDjIRxo=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=rvO5cIibE0SbJSciP9+CQ9Awr1RRg/4ZedhKfYenh1Ssww64RfY6Sv1GSyjVeDgJkbvMz8TUGDzHg/NQoHqsxEdpfyGYxxr9ilVIOM+VJ0poT1kgq+DxjcXC+iiT7hOvVRY3WvPaUS40GO4qJa2X2RnHBVGAjpsLnczbd6CFmaA=","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=1776177808;\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=Qui3HxQS2BfdH4g3RKB+Wr14cM4H6FVhvV60X+OBS5Y=;\n b=WTX47dt7Zfe9hEztZsLqpZbY29StR+lo+tWcv+OGz4gU7aoKFmw3dj0KQXvS314Zha5iA+\n idx0scyoUQSjupWpbChkj4UwmSaXcTzUNfxQ9v6OxtDFm+plhBzejx63RTM2WEvpomEmE/\n xE/6xSG1hxURJRelxk8sfFzQWn1dM5A=","X-MC-Unique":"X1ZE9RoMNhWaDL3Q4gIEAg-1","X-Mimecast-MFC-AGG-ID":"X1ZE9RoMNhWaDL3Q4gIEAg_1776177806","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776177806; x=1776782606;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Qui3HxQS2BfdH4g3RKB+Wr14cM4H6FVhvV60X+OBS5Y=;\n b=VIR0EsPiwldknR3smkYL7ShrkiOuIVFdgAw3d3MgX1Oh93QmmEA8T/6u1kVQS8GitE\n MlS7dCMSlmH2ezYvub3ynN7+F/XMZpExqXUQiWFk2DIFJslG9jFEwjbPH/biNwy4zc+h\n JYUUa2njfLpW4/JUJMvg1+V75WeAKbSAo+eB1uR1Q51hDAxuCCSizDlxR8pIrTPgDSTJ\n aLwzYhf37QA5Ci0vnB3OZ3rrcDb3Sb3Gf9F7CeqmLl/KCI2NJbxZa/74T9wrUyy+D8Cg\n BZ28+yOXIz39qvY8ncaii5ULg9QKGAKFIU8FcCVO1Bb+2yFcmB7jWx7VDmIC3UHiB2SI\n HOgg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8TV2ITYTSBV+XOaUopN9AOZ6aLE6Rg/wTkBuV+Pz0SL7y9QcLUkFdfGiZwhJYVpQZdyPtlkp86YCp37A==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YxsqdF0V0pBDloQQYGSQSDMF0R8SsWZtsGPuXn2vjZxGQxbKPGO\n +F02/wpg9wALnCDWb0nGLyhm28f98aIMuBBd5RYyg87iEuavrNka/CYWNB4j1vXFewpjRnbVByL\n M3jF90GBKjxpD1SfZ8vPNrgRDFFQw7T6iMMWS8EFVhHzqHM4ZlCLIWxL/ujrKpxpYKTXmVyyjeG\n hzqH0IPrtTKKHTDFsXX3KcCJ2vI5GKRWT4NQ==","X-Gm-Gg":"AeBDiesgY9XDGIO6JLKJCqj3UE0QSBe8KO6JdxTPQFuCYFxG6v11H/RdvlljxWsEa4J\n dkFpT72KB9F7jF33VLqBDdd0/tRNwTSO2q+9VT9b3D72h9IBe6bGtLoVCvePY973dBB3FWqw14K\n UzGQhUGMtVNJi2J4/vFwmcqXDaDUDtqkuzPYAwljhmX3pBa2E/N+cJ3bSv6FTT9Zx0CG9AOu69F\n wzQOKar5ymoEuev5GA2SUcsAvc+Q0a1b8bXbJcUQ5/5UP2RxYQkXNSyLn05/X0sdKU=","X-Received":["by 2002:a05:690e:1289:b0:651:db4c:808f with SMTP id\n 956f58d0204a3-651db4c9b26mr3911687d50.45.1776177806246;\n Tue, 14 Apr 2026 07:43:26 -0700 (PDT)","by 2002:a05:690e:1289:b0:651:db4c:808f with SMTP id\n 956f58d0204a3-651db4c9b26mr3911659d50.45.1776177805801; Tue, 14 Apr 2026\n 07:43:25 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260414143908.930196-1-tkaminsk@redhat.com>","In-Reply-To":"<20260414143908.930196-1-tkaminsk@redhat.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Tue, 14 Apr 2026 15:43:09 +0100","X-Gm-Features":"AQROBzBkbty7yrfy6xm4qpe7FbYQr6V82VzoOWMCo5PQ4cIjPfCCxtCUR1WZPWQ","Message-ID":"\n <CACb0b4=99WePcQD3UJtizLmb0m9THZMxk=y-YSVUSSKFp--2zg@mail.gmail.com>","Subject":"Re: [PATCH] libstdc++: Define __cpp_lib_stdbit_h and\n __cpp_lib_stdckdint_h feature test macros.","To":"=?utf-8?q?Tomasz_Kami=C5=84ski?= <tkaminsk@redhat.com>","Cc":"libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"-4jXGj-InFwDQz8WH7lLzggAd4P9YRe_1R-SgmiYjvo_1776177806","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","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"}}]