--- /dev/null
+#ifndef MSP_CORE_NONCOPYABLE_H_
+#define MSP_CORE_NONCOPYABLE_H_
+
+namespace Msp {
+
+class NonCopyable
+{
+#if __cplusplus >= 201103L
+protected:
+ NonCopyable() = default;
+ NonCopyable(const NonCopyable &) = delete;
+ NonCopyable &operator=(const NonCopyable &) = delete;
+ ~NonCopyable() = default;
+#else
+private:
+ NonCopyable(const NonCopyable &) { }
+ NonCopyable &operator=(const NonCopyable &) { }
+protected:
+ NonCopyable() { }
+ ~NonCopyable() { }
+#endif
+};
+
+} // namespace Msp
+
+#endif