namespace std {
template <class T, class D = default_delete<T>> class unique_ptr {
public:
...
template <class U, class E>
unique_ptr(unique_ptr<U, E>&& u);
template <class U>
explicit unique_ptr(auto_ptr<U>& u);
template <class U>
unique_ptr(auto_ptr<U>&& u);
...
};
}
template <class U>explicit unique_ptr(auto_ptr<U>& u);template <class U> unique_ptr(auto_ptr<U>&& u);27 Effects: Constructs a unique_ptr object, initializing the stored pointer with u.release() and value-initializing the stored deleter.
28 Postconditions: get() yields the value u.get() yielded before the construction. u.get() == nullptr. get_deleter() returns a reference to the stored deleter.
29 Throws: Nothing.
30 Remarks:
These constructorsThis constructor shall not participate in overload resolution unless U* is implictly convertible to T* and D is the same type as default_delete<T>.