Template Class impl_ptr

Inheritance Relationships

Base Type

Class Documentation

template<class T, class Deleter = details::default_deleter_t<T>, class Copier = details::default_copier_t<T>>
class impl_ptr : public spimpl::unique_impl_ptr<T, details::default_deleter_t<T>>

Public Types

using pointer = typename base_type::pointer
using const_pointer = typename base_type::const_pointer
using reference = typename base_type::reference
using const_reference = typename base_type::const_reference
using element_type = typename base_type::element_type
using deleter_type = typename base_type::deleter_type
using unique_ptr_type = typename base_type::unique_ptr_type
using copier_type = typename std::decay<Copier>::type
using is_default_manageable = details::is_default_manageable<T, deleter_type, copier_type>

Public Functions

inline SPIMPL_CONSTEXPR impl_ptr () SPIMPL_NOEXCEPT
inline SPIMPL_CONSTEXPR impl_ptr (std::nullptr_t) SPIMPL_NOEXCEPT
template<class D, class C> inline  impl_ptr (pointer p, D &&d, C &&c, typename std::enable_if< std::is_convertible< D, deleter_type >::value &&std::is_convertible< C, copier_type >::value, typename base_type::dummy_t_ >::type=typename base_type::dummy_t_()) SPIMPL_NOEXCEPT
template<class U> inline  impl_ptr (U *u, typename std::enable_if< std::is_convertible< U *, pointer >::value &&is_default_manageable::value, dummy_t_ >::type=dummy_t_()) SPIMPL_NOEXCEPT
inline impl_ptr(const impl_ptr &r)
impl_ptr (impl_ptr &&r) SPIMPL_NOEXCEPT=default
template<class U> inline  impl_ptr (std::unique_ptr< U > &&u, typename std::enable_if< std::is_convertible< U *, pointer >::value &&is_default_manageable::value, dummy_t_ >::type=dummy_t_()) SPIMPL_NOEXCEPT
template<class U, class D, class C> inline  impl_ptr (std::unique_ptr< U, D > &&u, C &&c, typename std::enable_if< std::is_convertible< U *, pointer >::value &&std::is_convertible< D, deleter_type >::value, dummy_t_ >::type=dummy_t_()) SPIMPL_NOEXCEPT
template<class U, class D, class C> inline  impl_ptr (impl_ptr< U, D, C > &&u, typename std::enable_if< std::is_convertible< U *, pointer >::value &&std::is_convertible< D, deleter_type >::value, dummy_t_ >::type=dummy_t_()) SPIMPL_NOEXCEPT
inline impl_ptr &operator=(const impl_ptr &r)
impl_ptr & operator= (impl_ptr &&r) SPIMPL_NOEXCEPT=default
template<class U, class D, class C>
inline std::enable_if<std::is_convertible<U*, pointer>::value && std::is_convertible<D, deleter_type>::value && std::is_convertible<C, copier_type>::value, impl_ptr&>::type operator=(const impl_ptr<U, D, C> &u)
template<class U> inline std::enable_if< std::is_convertible< U *, pointer >::value &&is_default_manageable::value, impl_ptr & >::type operator= (std::unique_ptr< U > &&u) SPIMPL_NOEXCEPT
template<class U, class D, class C> inline std::enable_if< std::is_convertible< U *, pointer >::value &&std::is_convertible< D, deleter_type >::value &&std::is_convertible< C, copier_type >::value, impl_ptr & >::type operator= (impl_ptr< U, D, C > &&u) SPIMPL_NOEXCEPT
inline void swap (impl_ptr &u) SPIMPL_NOEXCEPT
inline impl_ptr clone() const
inline const std::remove_reference< copier_type >::type & get_copier () const SPIMPL_NOEXCEPT
inline std::remove_reference< copier_type >::type & get_copier () SPIMPL_NOEXCEPT