namespace std {
template <typename T>
class default_delete {};
template <typename type, typename Deleter = std::default_delete<type>>
class unique_ptr {
public:
unique_ptr() {}
unique_ptr(type *ptr) {}
unique_ptr(const unique_ptr<type> &t) = delete;
unique_ptr(unique_ptr<type> &&t) {}
~unique_ptr() {}
type &operator*() { return *ptr; }
type *operator->() { return ptr; }
type *release() { return ptr; }
void reset() {}
void reset(type *pt) {}
void reset(type pt) {}
unique_ptr &operator=(unique_ptr &&) { return *this; }
template <typename T>
unique_ptr &operator=(unique_ptr<T> &&) { return *this; }
private:
type *ptr;
};
} // namespace std