diff --git a/libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp b/libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp @@ -0,0 +1,23 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// Make sure libc++'s defines types like ::nullptr_t in the global namespace. +// This is a conforming extension to be consistent with other implementations, which all +// appear to provide that behavior too. + +#include +#include "test_macros.h" + +using PtrdiffT = ::ptrdiff_t; +using SizeT = ::size_t; +#if TEST_STD_VER >= 11 +using MaxAlignT = ::max_align_t; +#endif + +// Supported in C++03 mode too for backwards compatibility with previous versions of libc++ +using NullptrT = ::nullptr_t; diff --git a/libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp b/libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// test the contents of + +// namespace std { +// using ptrdiff_t = see below; +// using size_t = see below; +// using max_align_t = see below; +// using nullptr_t = decltype(nullptr); +// +// enum class byte : unsigned char {}; +// +// // [support.types.byteops], byte type operations +// [...] other byte-related functionality is tested elsewhere +// } +// +// #define NULL see below +// #define offsetof(P, D) see below + +#include +#include "test_macros.h" + +using PtrdiffT = std::ptrdiff_t; +using SizeT = std::size_t; +#if TEST_STD_VER >= 11 +using MaxAlignT = std::max_align_t; +using NullptrT = std::nullptr_t; +#endif + +#if TEST_STD_VER >= 17 +using Byte = std::byte; +#endif + +#ifndef NULL +# error "NULL should be defined by " +#endif + +#ifndef offsetof +# error "offsetof() should be defined by " +#endif