CsPointer  2.0.0
cs_enable_shared.h
1 
19 #ifndef LIB_CS_ENABLE_SHARED_H
20 #define LIB_CS_ENABLE_SHARED_H
21 
22 #include <cs_shared_pointer.h>
23 
24 #include <memory>
25 
26 namespace CsPointer {
27 
28 template <typename T>
29 class CsEnableSharedFromThis : public std::enable_shared_from_this<T>
30 {
31  public:
33  try {
34  return this->shared_from_this();
35 
36  } catch (std::bad_weak_ptr &) {
37  return nullptr;
38 
39  }
40  }
41 
43  try {
44  return this->shared_from_this();
45 
46  } catch (std::bad_weak_ptr &) {
47  return nullptr;
48 
49  }
50  }
51 
52  protected:
53  ~CsEnableSharedFromThis() = default;
54  CsEnableSharedFromThis() = default;
55 
57  }
58 
60  return *this;
61  }
62 };
63 
64 } // end namespace
65 
66 #endif
67 
CsEnableSharedFromThis & operator=(const CsEnableSharedFromThis &)
Definition: cs_enable_shared.h:59
CsEnableSharedFromThis(const CsEnableSharedFromThis &)
Definition: cs_enable_shared.h:56
CsSharedPointer< const T > sharedFromThis() const
Definition: cs_enable_shared.h:42
Stores a pointer to a potentially shared object.
Definition: cs_shared_pointer.h:34
CsSharedPointer< T > sharedFromThis()
Definition: cs_enable_shared.h:32
Base class which provides a CsSharedPointer for an existing object.
Definition: cs_enable_shared.h:29
Namespace for the CsPointer library.