Iros
 
Loading...
Searching...
No Matches
di::vocab::Box< T, Deleter > Class Template Reference

#include <di/vocab/pointer/box.h>

Public Member Functions

 Box ()=default
 
constexpr Box (nullptr_t)
 
constexpr Box (T *pointer)
 
 Box (Box const &)=delete
 
constexpr Box (Box &&other)
 
constexpr Box (T *pointer, Deleter const &deleter)
 
template<concepts::MoveConstructible D = Deleter>
requires (!concepts::LValueReference<Deleter>)
constexpr Box (T *pointer, D &&deleter)
 
template<typename D = Deleter>
requires (concepts::LValueReference<Deleter>)
 Box (T *, meta::RemoveReference< D > &&)=delete
 
template<typename U, typename E>
requires (concepts::ImplicitlyConvertibleTo<U*, T*> && !concepts::LanguageArray<U> && ((concepts::Reference<Deleter> && concepts::SameAs<E, Deleter>) || (!concepts::Reference<Deleter> && concepts::ImplicitlyConvertibleTo<E, Deleter>) ))
constexpr Box (Box< U, E > &&other)
 
constexpr ~Box ()
 
auto operator= (Box const &) -> Box &=delete
 
constexpr auto operator= (Box &&other) -> Box &requires(concepts::MoveAssignable< Deleter >)
 
template<typename U, typename E>
requires (concepts::ImplicitlyConvertibleTo<U*, T*> && !concepts::LanguageArray<U> && concepts::AssignableFrom<Deleter&, E &&>)
constexpr auto operator= (Box< U, E > &&other) -> Box &
 
constexpr auto operator= (nullptr_t) -> Box &
 
constexpr auto release () -> T *
 
constexpr void reset (T *pointer=nullptr)
 
constexpr auto get () const -> T *
 
constexpr auto get_deleter () -> Deleter &
 
constexpr auto get_deleter () const -> Deleter const &
 
constexpr operator bool () const
 
constexpr auto operator* () const -> T &
 
constexpr auto operator-> () const -> T *
 

Friends

template<typename U>
constexpr friend auto operator== (Box const &a, Box< U > const &b) -> bool
 
template<typename U>
constexpr friend auto operator<=> (Box const &a, Box< U > const &b)
 
constexpr friend auto operator== (Box const &a, nullptr_t) -> bool
 
constexpr friend auto operator<=> (Box const &a, nullptr_t)
 

Constructor & Destructor Documentation

◆ Box() [1/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( )
default

◆ Box() [2/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( nullptr_t )
inlineconstexpr

◆ Box() [3/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( T * pointer)
inlineexplicitconstexpr

◆ Box() [4/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( Box< T, Deleter > const & )
delete

◆ Box() [5/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( Box< T, Deleter > && other)
inlineconstexpr

◆ Box() [6/9]

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::Box ( T * pointer,
Deleter const & deleter )
inlineconstexpr

◆ Box() [7/9]

template<typename T, typename Deleter = DefaultDelete<T>>
template<concepts::MoveConstructible D = Deleter>
requires (!concepts::LValueReference<Deleter>)
di::vocab::Box< T, Deleter >::Box ( T * pointer,
D && deleter )
inlineconstexpr

◆ Box() [8/9]

template<typename T, typename Deleter = DefaultDelete<T>>
template<typename D = Deleter>
requires (concepts::LValueReference<Deleter>)
di::vocab::Box< T, Deleter >::Box ( T * ,
meta::RemoveReference< D > &&  )
delete

◆ Box() [9/9]

template<typename T, typename Deleter = DefaultDelete<T>>
template<typename U, typename E>
requires (concepts::ImplicitlyConvertibleTo<U*, T*> && !concepts::LanguageArray<U> && ((concepts::Reference<Deleter> && concepts::SameAs<E, Deleter>) || (!concepts::Reference<Deleter> && concepts::ImplicitlyConvertibleTo<E, Deleter>) ))
di::vocab::Box< T, Deleter >::Box ( Box< U, E > && other)
inlineconstexpr

◆ ~Box()

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::~Box ( )
inlineconstexpr

Member Function Documentation

◆ get()

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::get ( ) const -> T*
inlineconstexpr

◆ get_deleter() [1/2]

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::get_deleter ( ) -> Deleter&
inlineconstexpr

◆ get_deleter() [2/2]

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::get_deleter ( ) const -> Deleter const&
inlineconstexpr

◆ operator bool()

template<typename T, typename Deleter = DefaultDelete<T>>
di::vocab::Box< T, Deleter >::operator bool ( ) const
inlineexplicitconstexpr

◆ operator*()

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::operator* ( ) const -> T&
inlineconstexpr

◆ operator->()

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::operator-> ( ) const -> T*
inlineconstexpr

◆ operator=() [1/4]

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::operator= ( Box< T, Deleter > && other) -> Box& requires(concepts::MoveAssignable<Deleter>)
inlineconstexpr

◆ operator=() [2/4]

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::operator= ( Box< T, Deleter > const & ) -> Box &=delete
delete

◆ operator=() [3/4]

template<typename T, typename Deleter = DefaultDelete<T>>
template<typename U, typename E>
requires (concepts::ImplicitlyConvertibleTo<U*, T*> && !concepts::LanguageArray<U> && concepts::AssignableFrom<Deleter&, E &&>)
auto di::vocab::Box< T, Deleter >::operator= ( Box< U, E > && other) -> Box&
inlineconstexpr

◆ operator=() [4/4]

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::operator= ( nullptr_t ) -> Box&
inlineconstexpr

◆ release()

template<typename T, typename Deleter = DefaultDelete<T>>
auto di::vocab::Box< T, Deleter >::release ( ) -> T*
inlineconstexpr

◆ reset()

template<typename T, typename Deleter = DefaultDelete<T>>
void di::vocab::Box< T, Deleter >::reset ( T * pointer = nullptr)
inlineconstexpr

Friends And Related Symbol Documentation

◆ operator<=> [1/2]

template<typename T, typename Deleter = DefaultDelete<T>>
template<typename U>
friend auto operator<=> ( Box< T, Deleter > const & a,
Box< U > const & b )
friend

◆ operator<=> [2/2]

template<typename T, typename Deleter = DefaultDelete<T>>
friend auto operator<=> ( Box< T, Deleter > const & a,
nullptr_t  )
friend

◆ operator== [1/2]

template<typename T, typename Deleter = DefaultDelete<T>>
template<typename U>
friend auto operator== ( Box< T, Deleter > const & a,
Box< U > const & b ) -> bool
friend

◆ operator== [2/2]

template<typename T, typename Deleter = DefaultDelete<T>>
friend auto operator== ( Box< T, Deleter > const & a,
nullptr_t  ) -> bool
friend

The documentation for this class was generated from the following file: