//! //!Effects: Constructs a unique_ptr which owns the pointer which u owns //!(if any). If the deleter is not a reference //!type, it is move constructed from u's deleter, otherwise the reference //!is copy constructed from u's deleter. //! //!After the construction, u no longer owns a pointer. //! //!postconditions get() == value u.get() had before the construction, //!modulo any required offset adjustments //!resulting from the cast from U* to T*. get_deleter() returns a reference to the internally stored deleter which //!was constructed from u.get_deleter(). //! //!Throws: nothing. template <class U, class E> unique_ptr(BOOST_RV_REF_2_TEMPL_ARGS(unique_ptr, U, E) u, typename detail::enable_if_c< detail::is_convertible<typename unique_ptr<U, E>::pointer, pointer>::value && detail::is_convertible<E, D>::value && ( !detail::is_reference<D>::value || detail::is_same<D, E>::value ) , nat >::type = nat()) : ptr_(const_cast<unique_ptr<U,E>&>(u).release(), boost::interprocess::move<D>(u.get_deleter())) {} //!Effects: If get() == 0 there are no effects. Otherwise get_deleter()(get()). //!
T2 second; //std::pair compatibility template <class D, class S> pair(const std::pair<D, S>& p) : first(p.first), second(p.second) {} //To resolve ambiguity with the variadic constructor of 1 argument //and the previous constructor pair(std::pair<T1, T2>& x) : first(x.first), second(x.second) {} template <class D, class S> pair(BOOST_RV_REF_2_TEMPL_ARGS(std::pair, D, S) p) : first(boost::move(p.first)), second(boost::move(p.second)) {} pair() : first(), second() {} pair(const pair<T1, T2>& x) : first(x.first), second(x.second) {} //To resolve ambiguity with the variadic constructor of 1 argument //and the copy constructor pair(pair<T1, T2>& x) : first(x.first), second(x.second)