Dune Core Modules (2.4.2)

nullptr.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_NULLPTR_HH
4 #define DUNE_NULLPTR_HH
5 
10 #if ! HAVE_NULLPTR
11 
18 const // this is a const object...
19 class dune_nullptr_t { // of type nullptr_t
20 public:
21  template<class T> // convertible to any type
22  operator T*() const // of null non-member
23  { return 0; } // pointer...
24  template<class C, class T> // or any type of null
25  operator T C::*() const // member pointer...
26  { return 0; }
27 private:
28  void operator&() const; // whose address can't be taken
29 } nullptr = {}; // and whose name is nullptr
30 
31 namespace Dune {
32  typedef dune_nullptr_t nullptr_t;
33 }
34 
35 template<class T>
36 bool operator == (T* t, dune_nullptr_t)
37 {
38  return (t == static_cast<T*>(nullptr));
39 }
40 
41 template<class T>
42 bool operator == (dune_nullptr_t, T* t)
43 {
44  return (t == static_cast<T*>(nullptr));
45 }
46 
47 #else
48 
49 #include <cstddef>
50 
51 namespace Dune {
52  using std::nullptr_t;
53 }
54 
55 #endif // HAVE_NULLPTR
56 
57 #endif // DUNE_NULLPTR_HH
Fallback implementation of nullptr.
Definition: nullptr.hh:19
Dune namespace.
Definition: alignment.hh:10
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 16, 22:29, 2024)