29 template <
typename _Tp>
35 template <
typename _Tp>
41 template <
typename _Tp,
size_t _Bound>
44 struct __invalid_type { };
48 template<
typename _Tp,
typename... _Args>
51 return unique_ptr<_Tp>(
new _Tp(std::forward<_Args>(__args)...));
55 template<
typename _Tp>
62 template<
typename _Tp,
typename... _Args>
63 inline typename _MakeUnique<_Tp>::__invalid_type
make_unique(_Args &&...) =
delete;
116 p.m_ref_count =
nullptr;
124 p.m_ref_count =
nullptr;
129 T*
get()
const noexcept {
return m_ptr; }
154 template <
typename T,
typename... Args>
160 template <
typename T,
typename U>
163 T* ptr =
static_cast<T*
>(p.get());
167 template <
typename T,
typename U>
170 T* ptr =
const_cast<T*
>(p.get());
174 template <
typename T,
typename U>
177 T* ptr =
dynamic_cast<T*
>(p.get());
181 template <
typename T,
typename U>
184 T* ptr =
reinterpret_cast<T*
>(p.get());
192 template <
typename T>
200 template <
typename T>
203 return std::make_shared<T>(*source);
206 template <
typename T>
209 return std::make_shared<T>(*source);
213 #endif // TTKSMARTPTR_H
unique_ptr< _Tp > __single_object
std::shared_ptr< T > makeCopy(const std::shared_ptr< T > &source)
TTKSharedPtr(T *ptr) noexcept
typename remove_extent< _Tp >::type remove_extent_t
Alias template for remove_extent.
T & operator*() const noexcept
TTKSharedPtr(TTKSharedPtr &&p)
unique_ptr< _Tp[]> __array
TTKSharedPtr< T > make_shared(Args &&...args)
TTKSharedPtr(const TTKSharedPtr &p)
TTKSharedPtr & operator=(TTKSharedPtr &&p)
std::atomic< int > m_count
_MakeUnique< _Tp >::__single_object make_unique(_Args &&...__args)
std::make_unique for single objects
TTKSharedPtr< T > const_pointer_cast(const TTKSharedPtr< U > &p) noexcept
TTKSharedPtr< T > reinterpret_pointer_cast(const TTKSharedPtr< U > &p) noexcept
T * operator->() const noexcept
TTKSharedPtr< T > dynamic_pointer_cast(const TTKSharedPtr< U > &p) noexcept
_SharedCount * m_ref_count
The namespace of the process utils.
TTKSharedPtr(const TTKSharedPtr< U > &p, T *ptr)
TTKSharedPtr< T > static_pointer_cast(const TTKSharedPtr< U > &p) noexcept
TTKSharedPtr & operator=(const TTKSharedPtr &p)