1 #ifndef MSP_GAME_HANDLE_H_
2 #define MSP_GAME_HANDLE_H_
9 class invalid_handle: public std::logic_error
12 invalid_handle(const std::type_info &);
27 static Handle from_object(T *o) { Handle h; h.ptr = o; return h; }
30 requires std::is_base_of_v<T, U>
31 Handle(const Handle<U> &other): ptr(other.ptr) { }
33 T *get() const { return ptr; }
34 T &operator*() const { return *ptr; }
35 T *operator->() const { return ptr; }
36 explicit operator bool() const { return ptr; }
38 bool operator==(const Handle &other) const = default;
41 } // namespace Msp::Game