[libcxx-commits] [libcxx] [libc++] Stabilize transitive includes for C++23 (PR #134143)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Thu May 29 13:18:44 PDT 2025


ldionne wrote:

I did some more research and it seems like many of the issues we hit might actually be linked to the removal of implementation detail headers and wouldn't have been caught even by stabilizing the C++23 headers. For example, ffc7380ff4808fcc21350a39caf7f34073b41697 is likely to have been the cause of our largest breakage for LLVM 20, but there's no way to guard against that kind of stuff systematically.

That being said, even if the cause for a lot of the breakage we saw in LLVM 20 might not have been prevented by stabilizing transitive includes, do we agree that we'd be at risk of breaking users if *we did* remove a transitive include in C++23? If so, then clearly we should be considering C++23 transitive includes as stable just like we consider the ones for C++20 and older standard modes stable. It just so happens that removal of these transitive includes will happen more infrequently than it used to, so this may not actually result in us adding any more "transitive includes conservation" blocks to the code.

https://github.com/llvm/llvm-project/pull/134143


More information about the libcxx-commits mailing list