31class autoclone_ptr :
public std::unique_ptr<T, D> {
33 autoclone_ptr() =
default;
34 autoclone_ptr(autoclone_ptr &&) =
default;
35 autoclone_ptr &operator=(autoclone_ptr &&) =
default;
36 autoclone_ptr(
const autoclone_ptr &a) : std::unique_ptr<T, D>(a ? a->clone() :
nullptr) {}
37 autoclone_ptr &operator=(
const autoclone_ptr &a) {
39 this->reset(t ? t->clone() :
nullptr);