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