[clang] [C++] Expose nullptr_t from stddef.h in C++ mode (PR #154599)
Nikolas Klauser via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 21 09:05:52 PDT 2025
================
@@ -16,7 +16,8 @@
#define _NULLPTR_T
#ifdef __cplusplus
-#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED)
+#if __cplusplus >= 201103L || \
+ (defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED))
----------------
philnik777 wrote:
> > We claim to be a C++11 implementation, not a C++03 implementation.
>
> That's not how I understood the RFC, unless I missed something. I understood it as libc++ is a C++03 and later implementation but that we're not making fixes to C++03 unless there's some major security vulnerability or other extenuating circumstance.
This has nothing to do with the RFC. libc++ has always provided a lot of "extensions" in C++03. From the very beginning we've had C++11 features implemented in C++03. I actually think it probably was a huge mistake, but we can't change it 15 years later. This is one of the main reasons we want to split the headers, so we can leave the cruft behind and not have massive workarounds for all the stuff we provide in 03.
> > Well, it does with libc++.
>
> It's a non-conforming extension.
If you look at it as a C++03 implementation. If you look at it as a C++11 implementation that works with C++03 compiler it's not.
https://github.com/llvm/llvm-project/pull/154599
More information about the cfe-commits
mailing list