/* SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once /** \file * \ingroup freestyle * \brief Utility header for auto_ptr/unique_ptr selection */ #include namespace Freestyle { template class AutoPtr : public std::unique_ptr { public: using std::unique_ptr::unique_ptr; AutoPtr() : std::unique_ptr() { } AutoPtr(T *ptr) : std::unique_ptr(ptr) { } /* Mimic behavior of legacy auto_ptr. * Keep implementation as small as possible, hens delete assignment operator. */ template AutoPtr(AutoPtr &other) : std::unique_ptr(other.get()) { other.release(); } using std::unique_ptr::operator=; template AutoPtr &operator=(AutoPtr &other) = delete; }; } /* namespace Freestyle */