00001 // -*- C++ -*- 00020 namespace coil 00021 { 00049 class NonCopyable 00050 { 00051 protected: 00052 NonCopyable() {} 00053 ~NonCopyable() {} 00054 private: 00055 NonCopyable(const NonCopyable&); 00056 NonCopyable& operator=(const NonCopyable&); 00057 }; 00058 00092 template <class T> 00093 class NonCopyableCRTP 00094 { 00095 protected: 00096 NonCopyable () {} 00097 ~NonCopyable () {} 00098 private: 00099 NonCopyable (const NonCopyable &); 00100 T & operator = (const T &); 00101 }; 00102 };