Hodgman completely resumed why I asked the question, I just use macro and not a class to avoid multiple inheritance for that like that :
#define NON_COPYABLE( Class )\
public:\
Class( const Class& ) = delete;\
Class& operator = ( const Class& ) = delete;
And use it like that :
class A
{
NON_COPYABLE( A )
};
I also use a NoCreate class, which has private, non-implemented constructors and destructors
You surely do that to have a static function Create and a destroy function which destroys himself.
The problem is derived class has to use also NoCreate or they could be instanciate without Create function.
Maybe you have a way to avoid this issue of NoCreate, because using delete on the destructor remove the possibility to inherit.
I sent a mail to iso-cpp to ask if a "forbid" keyword could be an idea as a new keyword for c++ to remove this issue.