
On Tue, Dec 23, 2008 at 02:04, Vladimir Batov <batov@people.net.au> wrote:
... My argument was that some things have some features and some others don't. That is there (or not there) for a purpose. If we, say, banish foo::foo() then is for a reason. Consequently, the functionality dependent on that foo::foo() will not be available for that same reason -- 'foo' should not be created with the def. cnstr. ...
Interestingly, I think that's the contrapositive of mine: If removing the default constructor prevents something from being useful in reasonable combinations with other classes, then removing the default constructor is a bad idea.
Yes, your view has its merit... but I like mine better. :-) In fact, I do not believe anyone uses purely one approach or the other. My overwhelming working style is from inside out. That is, driven by the applicability of certain functionality to the particular class in question. Indeed, the introduction of that functionality is most often driven by some *external* need (as in your approach). However, the applicability for me is an overriding criterion. V.