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

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

Public Types

using Type = T

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 *
constexpr auto begin () const -> T *
constexpr auto end () const -> T *

Friends

template<typename U>
constexpr friend auto operator== (Box const &a, Box< U > const &b) -> bool
constexpr friend auto operator== (Box const &a, nullptr_t) -> bool
template<typename U>
constexpr friend auto operator<=> (Box const &a, Box< U > const &b)
constexpr friend auto operator<=> (Box const &a, nullptr_t)
constexpr friend auto tag_invoke (Tag< concepts::trivially_relocatable >, InPlaceType< Box >) -> bool

Member Typedef Documentation

◆ Type

template<typename T, typename Deleter = DefaultDelete<T>>
using di::vocab::Box< T, Deleter >::Type = 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

◆ begin()

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

◆ end()

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

◆ 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->Deleterconst &
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

◆ 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

◆ tag_invoke

template<typename T, typename Deleter = DefaultDelete<T>>
friend auto tag_invoke ( Tag< concepts::trivially_relocatable > ,
InPlaceType< Box< T, Deleter > >  )->bool
friend

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