41 throw std::invalid_argument(
"invalid shared_reference");
49 throw std::invalid_argument(
"invalid shared_reference");
56 m_ptr = std::move(
p.m_ptr);
68 operator std::shared_ptr<T>()
77 template <
typename XT,
typename...XTypes>
83 template <
typename T,
typename...Types>
std::shared_ptr< T > m_ptr
shared_reference(const shared_reference< Y > &p)
shared_reference & operator=(const shared_reference< Y > &p)
shared_reference & operator=(shared_reference< Y > &&p)
const T * operator->() const
const T & operator*() const
shared_reference(const std::shared_ptr< Y > &p)
friend shared_reference< XT > make_shared_reference(XTypes &&...args)
shared_reference(shared_reference< Y > &&p)
~shared_reference()=default
shared_reference(std::shared_ptr< Y > &&p)
shared_reference< T > make_shared_reference(Types &&...args)