//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // #include #include "test_macros.h" void use() { // Make sure we can use the following types without including anything else (void)sizeof(size_t); (void)sizeof(ptrdiff_t); #if TEST_STD_VER >= 11 (void)sizeof(nullptr); (void)sizeof(nullptr_t); (void)sizeof(max_align_t); #endif } #ifndef NULL #error NULL not defined #endif #ifndef offsetof #error offsetof not defined #endif #include static_assert(sizeof(size_t) == sizeof(void*), ""); static_assert(std::is_unsigned::value, ""); static_assert(std::is_integral::value, ""); static_assert(sizeof(ptrdiff_t) == sizeof(void*), ""); static_assert(std::is_signed::value, ""); static_assert(std::is_integral::value, ""); static_assert((std::is_same::value), ""); static_assert(sizeof(nullptr_t) == sizeof(void*), ""); #if TEST_STD_VER >= 11 # if TEST_STD_VER >= 20 // P0767 static_assert(std::is_trivial::value, ""); static_assert(std::is_standard_layout::value, ""); # else static_assert(std::is_pod::value, ""); # endif static_assert(std::alignment_of::value >= std::alignment_of::value, ""); static_assert(std::alignment_of::value >= std::alignment_of::value, ""); static_assert(std::alignment_of::value >= std::alignment_of::value, ""); #endif // TEST_STD_VER >= 11