19 #ifndef LIB_CS_SHARED_ARRAY_POINTER_H
20 #define LIB_CS_SHARED_ARRAY_POINTER_H
22 #include <cs_pointer_traits.h>
23 #include <cs_shared_pointer.h>
55 this->m_ptr = other.m_ptr;
61 this->m_ptr = other.m_ptr;
77 this->m_ptr = std::move(other.m_ptr);
83 this->m_ptr = std::move(other.m_ptr);
88 return this->
get()[0];
92 return this->
get()[index];
96 template <
typename T,
typename =
typename std::enable_if_t<std::is_array_v<T>>>
97 CsSharedArrayPointer<T>
make_shared(std::size_t size)
99 using Type = std::remove_extent_t<T>;
101 return std::shared_ptr<T>(
new Type[size]);
CsSharedPointer< cs_add_missing_extent_t< T > > make_shared(Args &&...args)
Definition: cs_shared_pointer.h:310
element_type & operator*() const noexcept
Definition: cs_shared_array_pointer.h:87
CsSharedArrayPointer & operator=(CsSharedArrayPointer< element_type[]> &&other)
Definition: cs_shared_array_pointer.h:81
CsSharedArrayPointer & operator=(CsSharedArrayPointer< element_type > &&other)
Definition: cs_shared_array_pointer.h:75
pointer get() const noexcept
Definition: cs_shared_pointer.h:203
CsSharedArrayPointer(CsSharedArrayPointer< element_type[]> &&other)
Definition: cs_shared_array_pointer.h:70
CsSharedArrayPointer(CsSharedArrayPointer< element_type > &&other)
Definition: cs_shared_array_pointer.h:65
CsSharedArrayPointer(const CsSharedArrayPointer< element_type[]> &other)
Definition: cs_shared_array_pointer.h:48
CsSharedArrayPointer(const CsSharedArrayPointer< element_type > &other)
Definition: cs_shared_array_pointer.h:43
element_type * pointer
Definition: cs_shared_array_pointer.h:35
CsSharedArrayPointer & operator=(const CsSharedArrayPointer< element_type > &other)
Definition: cs_shared_array_pointer.h:53
pointer Pointer
Definition: cs_shared_pointer.h:43
typename cs_add_missing_extent< T >::type cs_add_missing_extent_t
Definition: cs_pointer_traits.h:35
CsWeakPointer< cs_add_missing_extent_t< T > > weak_type
Definition: cs_shared_array_pointer.h:34
element_type & operator[](std::size_t index) const noexcept
Definition: cs_shared_array_pointer.h:91
element_type ElementType
Definition: cs_shared_pointer.h:41
Stores a weak pointer to a potentially shared object.
Definition: cs_shared_pointer.h:31
CsSharedArrayPointer & operator=(const CsSharedArrayPointer< element_type[]> &other)
Definition: cs_shared_array_pointer.h:59
typename std::shared_ptr< cs_add_missing_extent_t< T > >::element_type element_type
Definition: cs_shared_array_pointer.h:33
Stores a pointer to a potentially shared object.
Definition: cs_shared_pointer.h:34
element_type * pointer
Definition: cs_shared_pointer.h:39
Stores a shared pointer to a dynamically allocated array of objects.
Definition: cs_shared_array_pointer.h:30
Namespace for the CsPointer library.