Non Copyable object

Non Copyable Macro

#include <vector> #define MACRO_NONCOPYABLE(ClassName) \ ClassName(const ClassName&) = delete; \ ClassName& operator=(const ClassName&) = delete; class NonCopyable { protected: NonCopyable() = default; ~NonCopyable() = default; public: MACRO_NONCOPYABLE(NonCopyable) }; class TestClass : public NonCopyable { public: TestClass() = default; ~TestClass() = default; }; int main(int argc, char const *argv[]) { std::vector<TestClass> v; TestClass t; v.push_back(std::move(t)); // <-- compile error here return 0; }