[libc++abi] Use std::nullptr_t instead of declaring it manually
authorRyan Prichard <rprichard@google.com>
Fri, 4 Nov 2022 22:51:44 +0000 (15:51 -0700)
committerRyan Prichard <rprichard@google.com>
Fri, 4 Nov 2022 22:51:44 +0000 (15:51 -0700)
Sometimes libc++'s stddef.h wrapper gets included, which defines
::nullptr_t. This test is compiled with -Wshadow -Werror, so shadowing
::nullptr_t with a nullptr_t in main is an error. Include cstddef,
which is guaranteed to define std::nullptr_t in C++11 and forward.

Reviewed By: ldionne, #libc_abi

Differential Revision: https://reviews.llvm.org/D137127

libcxxabi/test/catch_reference_nullptr.pass.cpp

index 708d5d7..e9c3ba3 100644 (file)
@@ -6,11 +6,13 @@
 //
 //===----------------------------------------------------------------------===//
 
-// UNSUPPORTED: c++03,
+// UNSUPPORTED: c++03
 // UNSUPPORTED: no-exceptions
 
 #include <cassert>
+#include <cstddef>
 #include <cstdlib>
+#include <type_traits>
 
 struct A {};
 
@@ -27,13 +29,13 @@ static void catch_nullptr_test() {
 
 int main(int, char**)
 {
-  using nullptr_t = decltype(nullptr);
+  static_assert(std::is_same<std::nullptr_t, decltype(nullptr)>::value, "");
 
   // A reference to nullptr_t can catch nullptr.
-  catch_nullptr_test<nullptr_t, true>();
-  catch_nullptr_test<const nullptr_t, true>();
-  catch_nullptr_test<volatile nullptr_t, true>();
-  catch_nullptr_test<const volatile nullptr_t, true>();
+  catch_nullptr_test<std::nullptr_t, true>();
+  catch_nullptr_test<const std::nullptr_t, true>();
+  catch_nullptr_test<volatile std::nullptr_t, true>();
+  catch_nullptr_test<const volatile std::nullptr_t, true>();
 
   // No other reference type can.
 #if 0