The constructors vector(Iter, Iter, Alloc = Alloc{}) and assign(Iter, Iter) don't correctly perform EmplaceConstruction from the result of dereferencing the iterator. This results in them performing an additional and unneeded copy.
This patch addresses the issue by correctly using emplace_back in C++11 and newer.
There are also some bugs in our insert implementation, but those will be handled separately.
@mclow.lists We should probably merge this into 5.1, agreed?
Sorry, this is all just re-formatting.