unique_ptr.h
Go to the documentation of this file.
1 
10 #pragma once
11 #include "interop/config.h"
12 
13 
14 
15 #if defined(__cplusplus) && __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1600) && !defined(HAVE_UNIQUE_PTR)
16 namespace stdbp
17 {
20  template<class T>
21  class unique_ptr
22  {
23  public:
28  unique_ptr(T* ptr=0) : m_ptr(ptr){}
33  ~unique_ptr(){delete m_ptr;}
40  unique_ptr(const unique_ptr<T>& up) : m_ptr(up.m_ptr){up.m_ptr = 0;}
48  unique_ptr<T>& operator=(const unique_ptr<T>& up) {m_ptr=up.m_ptr;up.m_ptr = 0;return *this;}
49 
50  public:
55  T* operator->() const {return m_ptr;}
60  T& operator*() const{return *m_ptr;}
66  bool operator!=(const unique_ptr<T>& up)const
67  {
68  return m_ptr != up.m_ptr;
69  }
75  bool operator!=(const T* ptr)const
76  {
77  return m_ptr != ptr;
78  }
83  operator bool()const
84  {
85  return m_ptr != 0;
86  }
87 
88  private:
89  mutable T* m_ptr;
90  };
91 }
92 #else
93 #include <memory>
94 namespace stdbp
95 {
96  template<typename T> using unique_ptr = std::unique_ptr<T>;
97 }
98 #endif
99 
100 
std::unique_ptr< T > unique_ptr
Definition: unique_ptr.h:96
Definition: enums.h:301
Definition: unique_ptr.h:94