Home | History | Annotate | Download | only in support.types
      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 #include <cstddef>
     11 #include <type_traits>
     12 #include <cassert>
     13 
     14 // typedef decltype(nullptr) nullptr_t;
     15 
     16 struct A
     17 {
     18     A(std::nullptr_t) {}
     19 };
     20 
     21 int main()
     22 {
     23     static_assert(sizeof(std::nullptr_t) == sizeof(void*),
     24                   "sizeof(std::nullptr_t) == sizeof(void*)");
     25     A* p = 0;
     26     assert(p == nullptr);
     27     void (A::*pmf)() = 0;
     28 #ifdef __clang__
     29     // GCC 4.2 can't handle this
     30     assert(pmf == nullptr);
     31 #endif
     32     int A::*pmd = 0;
     33     assert(pmd == nullptr);
     34     A a1(nullptr);
     35     A a2(0);
     36     bool b = nullptr;
     37     assert(!b);
     38     assert(nullptr == nullptr);
     39     assert(nullptr <= nullptr);
     40     assert(nullptr >= nullptr);
     41     assert(!(nullptr != nullptr));
     42     assert(!(nullptr < nullptr));
     43     assert(!(nullptr > nullptr));
     44     A* a = nullptr;
     45     assert(a == nullptr);
     46     assert(a <= nullptr);
     47     assert(a >= nullptr);
     48     assert(!(a != nullptr));
     49     assert(!(a < nullptr));
     50     assert(!(a > nullptr));
     51     assert(nullptr == a);
     52     assert(nullptr <= a);
     53     assert(nullptr >= a);
     54     assert(!(nullptr != a));
     55     assert(!(nullptr < a));
     56     assert(!(nullptr > a));
     57     std::ptrdiff_t i = reinterpret_cast<std::ptrdiff_t>(nullptr);
     58     assert(i == 0);
     59 }
     60