
Is there any interest in a small utility which let developers to define pseudo-final classes, meaning that it is not possible to instantiate objects belonging to derived classes. Unfortunately, I could test my tool only on a Linux platform with the compiler gcc 4.1.1 and I am not sure the technique I used is portable to other compilers. Usage --------------------------------------------------------------------// Suppose you want to define a final class Foo, then you have to write class Foo : BOOST_NON_DERIVABLE { // .... }; Now, you try to subclass it class Goo : public Foo { // ... }; When you use inheritance it is quite obvious, you want to instantiate objects of the classes involved in the hierarchy; thus, somewhere you will probably write Goo goo; // a variant or a member of type Goo But the compiler will produce an error like that utility/nonderivable.hpp: In constructor 'Goo::Goo()': utility/nonderivable.hpp:23: error: 'boost::nonderivable_helper::nonderivable_helper()' is protected main.cpp:14: error: within this context utility/nonderivable.hpp:30: error: 'boost::nonderivable_helper::~nonderivable_helper()' is protected main.cpp:14: error: within this context main.cpp:14: error: no matching function for call to 'Foo::Foo()' main.cpp:9: note: candidates are: Foo::Foo(int) main.cpp:8: note: Foo::Foo(const Foo&) main.cpp: In function 'int main()': main.cpp:26: note: synthesized method 'Goo::Goo()' first required here utility/nonderivable.hpp: In destructor 'Goo::~Goo()': utility/nonderivable.hpp:30: error: 'boost::nonderivable_helper::~nonderivable_helper()' is protected main.cpp:14: error: within this context main.cpp: In function 'int main()': main.cpp:26: note: synthesized method 'Goo::~Goo()' first required here Best regards, Manuel Fiorelli