#ifndef __LIB_CPP_UNCOPYABLE_H
#define __LIB_CPP_UNCOPYABLE_H

// Any class that privately inheirits from this class can not be copied, either by compilation
// failure, or by linker error.
// from Effective C++, Third Edition, Item 6
class Uncopyable {
  protected:
	Uncopyable() {}
	~Uncopyable() {}

  private:
	Uncopyable(const Uncopyable &);
	Uncopyable& operator=(const Uncopyable &);
};

#endif
