#pragma once namespace renderive { class Move_Only { protected: Move_Only() = default; Move_Only(const Move_Only&) = delete; Move_Only& operator=(const Move_Only&) = delete; Move_Only(Move_Only&&) noexcept = default; Move_Only& operator=(Move_Only&&) noexcept = default; ~Move_Only() = default; }; class Immovable { protected: Immovable() = default; Immovable(const Immovable&) = delete; Immovable& operator=(const Immovable&) = delete; Immovable(Immovable&&) = delete; Immovable& operator=(Immovable&&) = delete; ~Immovable() = default; }; }