00001 // -*- C++ -*- 00021 #ifndef COIL_NONCOPYABLE_H 00022 #define COIL_NONCOPYABLE_H 00023 00024 namespace coil 00025 { 00053 class NonCopyable 00054 { 00055 protected: 00071 NonCopyable() {} 00072 00088 ~NonCopyable() {} 00089 private: 00090 NonCopyable(const NonCopyable&); 00091 NonCopyable& operator=(const NonCopyable&); 00092 }; 00093 00127 template <class T> 00128 class NonCopyableCRTP 00129 { 00130 protected: 00146 NonCopyableCRTP() {} 00147 00163 ~NonCopyableCRTP() {} 00164 private: 00165 NonCopyableCRTP(const NonCopyableCRTP &); 00166 T & operator=(const T &); 00167 }; 00168 }; 00169 00170 #endif // COIL_NONCOPYABLE_H