#pragma once #include #include namespace data::cassandra::impl { template class ManagedObject { protected: std::unique_ptr ptr_; public: template ManagedObject(Managed* rawPtr, DeleterCallable deleter) : ptr_{rawPtr, deleter} { if (rawPtr == nullptr) throw std::runtime_error("Could not create DB object - got nullptr"); } operator Managed*() const { return ptr_.get(); } }; } // namespace data::cassandra::impl