2008/12/4 Hicham Mouline <hicham@mouline.org>
AFAIU, deriving from boost::noncopyable disables _accidental_ object
copying.

Is it possible to implement a clone() const member function of the object
to _explicitly_ get a copy of the object?

Perhaps deriving boost::noncopyable makes it totally impossible to ever
get a copy of an object without resorting to byte copy.

To avoid creating copies accidentally consider making copy constructor explicit.

struct Foo {
  explicit Foo(const Foo&) {}
};

void Bar(Foo);

int main() {
  Foo foo;
  Bar(foo); // Error, implicit copy.
  Foo copy(foo); // OK, explicit copy.
}

Roman Perepelitsa.