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 NonCopyable () {} 00143 00159 ~NonCopyable () {} 00160 private: 00161 NonCopyable (const NonCopyable &); 00162 T & operator = (const T &); 00163 }; 00164 };