[libc++] Add tests for the content of <cstddef>

As discussed in D114786.

Differential Revision: https://reviews.llvm.org/D121110
This commit is contained in:
Louis Dionne 2022-03-07 08:43:14 -05:00
parent 553ab7a090
commit 071762199f
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,26 @@
//===----------------------------------------------------------------------===//
//
// 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 <cstddef> 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 <cstddef>
#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;
// Also ensure that we provide std::nullptr_t in C++03 mode, which is an extension too.
using StdNullptrT = std::nullptr_t;

View File

@ -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 <cstddef>
// 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 <cstddef>
#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 <cstddef>"
#endif
#ifndef offsetof
# error "offsetof() should be defined by <cstddef>"
#endif