I don't know when it is fine to switch, but at some point, I think it is fine to require a C++23 compiler, so that new stuff is unlocked. Of course this requires bumping the minimum required compiler versions:
GCC: 13
Clang: 19
There are some C++23 features that aren't implemented (such as <stacktrace> not really shipped in any vanilla stdlib today), or e.g. ranges::starts_with not implemented until libstdc++-16. But overall I think we are better off using C++23 without those few features instead of waiting longer?
DrahtBot renamed this: [wip,nomerge,rfc] build: Require C++23 compiler [wip,nomerge,rfc] build: Require C++23 compiler on Aug 20, 2026
DrahtBot
commented at 9:06 AM on August 20, 2026:
contributor
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
If your review is incorrectly listed, please copy-paste <code><!--meta-tag:bot-skip--></code> into the comment that the bot should ignore.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#36480 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36480.svg"></sub> (txospenderindex: hash keys and pack positions to reduce disk usage by arejula27)
#36255 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36255.svg"></sub> (Refactor CoinGrinder tests by murchandamus)
#34132 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/34132.svg"></sub> (coins, dbwrapper: remove error catcher, make point-read failures fatal by l0rinc)
#31507 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/31507.svg"></sub> (build: Use clang-cl to build on Windows natively by hebasto)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
<!--5faf32d7da4f0f540f40219e4f7537a3-->
maflcko marked this as a draft on Aug 20, 2026
maflcko force-pushed on Aug 20, 2026
DrahtBot added the label CI failed on Aug 20, 2026
DrahtBot
commented at 10:17 AM on August 20, 2026:
contributor
<!--85328a0da195eb286784d51f73fa0af9-->
🚧 At least one of the CI tasks failed.
<sub>Task NetBSD Cross: https://github.com/bitcoin/bitcoin/actions/runs/32352184973/job/96373551351</sub>
<sub>LLM reason (✨ experimental): CI failed due to a C++ build error: std::ranges::views::zip is not available (no member named 'zip' in namespace 'std::ranges::views').</sub>
<details><summary>Hints</summary>
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
</details>
maflcko force-pushed on Aug 21, 2026
l0rinc
commented at 5:08 PM on August 21, 2026:
contributor
Concept ACK
hebasto
commented at 4:34 PM on August 23, 2026:
member
edede385cab47020124bba6db98d69319168afb5
iwyu incorrectly suggests to remove the util/expected include
DrahtBot added the label Needs rebase on Sep 9, 2026
maflcko force-pushed on Sep 23, 2026
DrahtBot removed the label Needs rebase on Sep 23, 2026
maflcko force-pushed on Sep 23, 2026
DrahtBot added the label Needs rebase on Sep 29, 2026
maflcko force-pushed on Sep 30, 2026
maflcko force-pushed on Sep 30, 2026
DrahtBot removed the label Needs rebase on Sep 30, 2026
DrahtBot added the label Needs rebase on Oct 2, 2026
maflcko force-pushed on Oct 2, 2026
DrahtBot removed the label Needs rebase on Oct 2, 2026
DrahtBot added the label Needs rebase on Oct 7, 2026
maflcko force-pushed on Oct 7, 2026
DrahtBot removed the label Needs rebase on Oct 7, 2026
DrahtBot added the label Needs rebase on Oct 21, 2026
build: Require C++23 compiler254e9ce482
util: Remove ALWAYS_FALSE type52e8b122f9
compat: Use std::byteswapdad6792295
test: Adjust util::Expected tests for C++23
1) value() might be marked [[nodiscard]], so add the missing (void),
where the value is ignored.
2) std::expected::value() must be able to throw
std::bad_expected_access<E> if the expected contains an error. That
requires copying the error type, which is not possible in this unit
test that uses a non-copyable error type.
Fix it by using the non-throwing value accessor.
refactor: Use std::views::zip in btck import blocksa95bb79a44
refactor: Make iwyu happy
IWYU will now apply the
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/WhatIsAUse.md#automatic-re-export-function-return-values
heuristic.
491d3fb446
refactor: clang-tidy readability-container-contains for C++23fdb06dfe8f
maflcko force-pushed on Oct 21, 2026
DrahtBot removed the label Needs rebase on Oct 21, 2026
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-10-21 18:51 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me