<p>I have a not-so-small class under development (that it changes often) and I need not to provide a public copy constructor and copy assignment.
The class has objects with value semantics, so default copy and assignment work.</p>

<p>the class is in a hierarchy, with virtual methods, so I provide a virtual Clone() to avoid slicing and to perform "polymorphic copy".</p>

<p>I don't want to declare copy assignment and construction protected AND to define them (and to maintain in-sync with changes) unless I have some special thing to perform.</p>

<p>Do someone knows if there's another way?</p>

<p>thanks!</p>

<p>UgaSofT</p>

I don't think there is anything in the C++ language that allows you to do this.  Although I'd love to be wrong on this point.
I've run into this in the past and come up with the following solution.  Asumme the class is C1.
Define a private inner class called Data
Put all of my members I would delare in C1 on Data instead
Define a protected copy constructor that just copies Data instances between C1.
This approach has a couple of downsides.  Namely it feels a bit un-natural and eliminates direct field access (can be mitigated with small accessor functions).
It's a roundabout way of doing what you're looking for but it avoids you having to write the copy constructor by hand.