#pragma once namespace blitz { class NonCopyable { public: NonCopyable(const NonCopyable&) = delete; NonCopyable& operator=(const NonCopyable&) = delete; protected: NonCopyable() {} ~NonCopyable() {} }; } // namespace blitz