Exceptional coding style

Stewart Gordon smjg_1998 at yahoo.com
Tue Jan 15 13:23:08 PST 2013


On 15/01/2013 10:20, FG wrote:
<snip>
> All thanks to a terrible naming decision...
> It's not remove but move_to_end. Why call it remove?

It doesn't necessarily move them to the end, going by
http://www.cplusplus.com/reference/algorithm/remove/
"The relative order of the elements not removed is preserved, while the 
elements past the new end of range are still valid, although with 
unspecified values."

Just looking at the sample implementation there....

     if (!(*first == value)) *result++ = *first;

places each non-removed value in its place in the final state of the 
container, but doesn't do anything particular with the value where it 
was taken from.  In a C++11 implementation, I would expect it to become

     if (!(*first == value)) *result++ = std::move(*first);

Stewart.


More information about the Digitalmars-d mailing list