Home | History | Annotate | Download | only in depr.c.headers
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <stddef.h>
     11 
     12 #include <stddef.h>
     13 #include <cassert>
     14 #include <type_traits>
     15 
     16 #include "test_macros.h"
     17 
     18 #ifndef NULL
     19 #error NULL not defined
     20 #endif
     21 
     22 #ifndef offsetof
     23 #error offsetof not defined
     24 #endif
     25 
     26 int main()
     27 {
     28     void *p = NULL;
     29     assert(!p);
     30 
     31     static_assert(sizeof(size_t) == sizeof(void*),
     32                   "sizeof(size_t) == sizeof(void*)");
     33     static_assert(std::is_unsigned<size_t>::value,
     34                   "std::is_unsigned<size_t>::value");
     35     static_assert(std::is_integral<size_t>::value,
     36                   "std::is_integral<size_t>::value");
     37     static_assert(sizeof(ptrdiff_t) == sizeof(void*),
     38                   "sizeof(ptrdiff_t) == sizeof(void*)");
     39     static_assert(std::is_signed<ptrdiff_t>::value,
     40                   "std::is_signed<ptrdiff_t>::value");
     41     static_assert(std::is_integral<ptrdiff_t>::value,
     42                   "std::is_integral<ptrdiff_t>::value");
     43     static_assert((std::is_same<decltype(nullptr), nullptr_t>::value),
     44                   "decltype(nullptr) == nullptr_t");
     45     static_assert(sizeof(nullptr_t) == sizeof(void*),
     46                   "sizeof(nullptr_t) == sizeof(void*)");
     47 #if TEST_STD_VER > 17
     48 //   P0767
     49     static_assert(std::is_trivial<max_align_t>::value,
     50                   "std::is_trivial<max_align_t>::value");
     51     static_assert(std::is_standard_layout<max_align_t>::value,
     52                   "std::is_standard_layout<max_align_t>::value");
     53 #else
     54     static_assert(std::is_pod<max_align_t>::value,
     55                   "std::is_pod<max_align_t>::value");
     56 #endif
     57     static_assert((std::alignment_of<max_align_t>::value >=
     58                   std::alignment_of<long long>::value),
     59                   "std::alignment_of<max_align_t>::value >= "
     60                   "std::alignment_of<long long>::value");
     61     static_assert(std::alignment_of<max_align_t>::value >=
     62                   std::alignment_of<long double>::value,
     63                   "std::alignment_of<max_align_t>::value >= "
     64                   "std::alignment_of<long double>::value");
     65     static_assert(std::alignment_of<max_align_t>::value >=
     66                   std::alignment_of<void*>::value,
     67                   "std::alignment_of<max_align_t>::value >= "
     68                   "std::alignment_of<void*>::value");
     69 }
     70