00001 // -*- C++ -*- 00020 namespace coil 00021 { 00049 class NonCopyable 00050 { 00051 protected: 00067 NonCopyable() {} 00068 00084 ~NonCopyable() {} 00085 private: 00086 NonCopyable(const NonCopyable&); 00087 NonCopyable& operator=(const NonCopyable&); 00088 }; 00089 00123 template <class T> 00124 class NonCopyableCRTP 00125 { 00126 protected: 00142 NonCopyableCRTP() {} 00143 00159 ~NonCopyableCRTP() {} 00160 private: 00161 NonCopyableCRTP(const NonCopyableCRTP &); 00162 T & operator=(const T &); 00163 }; 00164 };