Jonathan Wakely wrote:
> It's under discussion
That's certainly a good news. Anyway, I'll wait
with porting my framework to the newest GCC,
until this issue is settled, as:
a) "= default" works as I expect on gcc 4.5-20090604
and maybe it will still do in the future;
b) gcc 4.5-20091119 reports so many ICEs it is almost
useless;
c) it seems to have problems with overload resolution.
I wanted lambdas, but it can wait -- the top of my
wish list, i.e. constructor inheritance/delegation is
not implemented yet anyway.
> but relax, notice it says "If it is explicitly
> defaulted on its first declaration,"
[...]
> inline Base::Base() = default;
> inline Base::~Base() = default;
Of course, I tried that and it works to some
extent, as on 20090604 defaulted virtual
destructors are not DLL-exported for some
reasons, but their {} counterparts are).
The point is that the only reason to have
defaulted functions is to provide comprehensive
syntax for obvious things. However:
inline Base::Base() {};
inline Base::~Base() {};
is even shorter than the defaulted version, not to mention:
class Base {
protected:
Base() {};
virtual ~Base() {};
};
which is the reason I dare to say the crippled version is useless.
What is the point of doing simple things in a complex way?
Best regards
Piotr Wyderski