On 02/05/17 10:16 +0100, Jonathan Wakely wrote:
On 28/04/17 13:56 +0100, Jonathan Wakely wrote:We optimize _Destroy and _Destroy_n to do nothing when the type has a trivial destructor, which means we do nothing (instead of giving an error) when trying to destroy types with deleted destructors.I wonder if this optimisation should even exist. The compiler should be able to optimise away a loop that just calls trivial destructors, without help from the library.
The compiler can indeed do that optimisation, even for destructors
like ~T() { } that are empty, but not trivial according to the
language rules. The libstdc++ optimisation does make a difference at
-O0 though. If we get any more bugs in that code I think we should
just remove it though, and let the compiler do the right thing.
