@chres I'm a bit unsure about the use of ``std::iter_swap`` is it really needed?