#undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName) \\
TypeName(const TypeName&); \\
If your type contains pointer or reference members, or it makes no semantic sense for it to be copied (e.g. it has a resource handle that must be freed in the destructor) then it is good practice to disable the copy constructor and assignment operator. In C++0x (e.g. in g++ 4.4 or later in -std=c++0x mode) you can declare them deleted. In older compilers you just declare them private and unimplemented.