/* * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #ifndef D_PTR_H #define D_PTR_H #include namespace kamd { namespace utils { template class d_ptr { private: std::unique_ptr d; public: d_ptr(); template d_ptr(Args &&...); ~d_ptr(); T *operator->() const; }; #define D_PTR \ class Private; \ friend class Private; \ const ::kamd::utils::d_ptr d #define D_PTRC(cls) \ friend class cls; \ const ::kamd::utils::d_ptr d } // namespace utils } // namespace kamd #endif