impl_ptr_policy::unique
// In header: <detail/unique.hpp> template<typename impl_type, typename allocator> struct unique { // types typedef unique this_type; typedef detail::traits::unique< impl_type, allocator > traits_type; typedef typename traits_type::pointer traits_ptr; // construct/copy/destruct template<typename... arg_types> unique(detail::in_place_type, arg_types &&...); unique(std::nullptr_t); unique(impl_type *); unique(this_type &&); unique(this_type const &) = delete; this_type & operator=(this_type &&); this_type & operator=(this_type const &) = delete; ~unique(); // public member functions template<typename derived_type, typename... arg_types> void emplace(arg_types &&...); bool operator<(this_type const &) const; void swap(this_type &); impl_type * get() const; long use_count() const; };