AUI Framework  master
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
_< T > Class Template Reference

An std::weak_ptr with AUI extensions. More...

#include <AUI/Common/SharedPtrTypes.h>

Public Types#

using stored_t = T
 

Public Member Functions#

 _ (const std::shared_ptr< T > &v)
 
 _ (std::shared_ptr< T > &&v) noexcept
 
 _ (const _ &v)
 
 _ (_ &&v) noexcept
 
 _ (const std::weak_ptr< T > &v)
 
 _ (const _weak< T > &v)
 
_operator= (const _ &rhs) noexcept
 
_operator= (_ &&rhs) noexcept
 
 _ (T *v)=delete
 
_weak< T > weak () const
 
template<typename SignalField, typename Object, typename Function>
_< T > & connect (SignalField signalField, Object object, Function &&function)
 
template<typename SignalField, typename Function>
_< T > & connect (SignalField signalField, Function &&function)
 
template<typename Functor>
const _< T > & operator^ (Functor &&functor) const
 
std::add_lvalue_reference_t< T > value () const noexcept
 Dereferences the stored pointer.
 
std::add_lvalue_reference_t< T > operator* () const noexcept
 Dereferences the stored pointer.
 
std::add_pointer_t< T > operator-> () const noexcept
 Dereferences the stored pointer.
 
auto begin () const
 
auto end () const
 
auto begin ()
 
auto end ()
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) << std::forward<Arg>(r); }
const _< T > & operator<< (Arg &&value) const
 
template<typename Arg>
_< T > & operator<< (Arg &&value)
 
template<typename... Arg>
requires std::is_invocable_v<T, Arg...>
auto operator() (Arg &&... value) const
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) + std::forward<Arg>(r); }
const _< T > & operator+ (Arg &&value) const
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) & std::forward<Arg>(r); }
const _< T > & operator& (Arg &&value) const
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) | std::forward<Arg>(r); }
const _< T > & operator| (Arg &&value) const
 
template<typename Arg>
_< T > & operator+ (Arg &&value)
 
template<typename Arg>
const _< T > & operator* (Arg &&value)
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) - std::forward<Arg>(r); }
const _< T > & operator- (Arg &&value) const
 
template<typename Arg>
_< T > & operator- (Arg &&value)
 
template<typename Arg>
requires requires (T&& l, Arg&& r) { std::forward<T>(l) >> std::forward<Arg>(r); }
const _< T > & operator>> (Arg &&value) const
 
template<typename... Args>
_< T > & operator() (const Args &... value)
 
template<typename... Args>
auto operator() (Args &&... value)
 

Detailed Description#

Constructor & Destructor Documentation#

◆ _()#

template<typename T>
_< T >::_ ( T * v)
delete

Trap constructor

In order to make shared pointer from the raw one, please explicitly specify how do you want manage memory by using either aui::ptr::manage or aui::ptr::fake.

Member Function Documentation#

◆ operator*()#

template<typename T>
std::add_lvalue_reference_t< T > _< T >::operator* ( ) const
inlinenodiscardnoexcept

On a debug build, throws an assertion failure if the stored pointer is nullptr, otherwise behaviour is undefined.

◆ operator->()#

template<typename T>
std::add_pointer_t< T > _< T >::operator-> ( ) const
inlinenodiscardnoexcept

On a debug build, throws an assertion failure if the stored pointer is nullptr, otherwise behaviour is undefined.

◆ value()#

template<typename T>
std::add_lvalue_reference_t< T > _< T >::value ( ) const
inlinenodiscardnoexcept

On a debug build, throws an assertion failure if the stored pointer is nullptr, otherwise behaviour is undefined.

◆ weak()#

template<typename T>
_weak< T > _< T >::weak ( ) const
inlinenodiscard
Returns
weak reference