On Wed, 3 Jul 2013, Michael Marcin wrote:
I was looking at minmax_elemement to try and understand the algorithm.
I noticed that the boost implementation looks significantly more complicated than the clang libc++ implementation.
It isn't that much longer...
Mainly due to the potential_min_result variable that exists in the boost version.
http://www.boost.org/doc/libs/1_54_0/libs/algorithm/minmax/ mentions why this variable exists.
Is there a reason for this discrepancy? Is there a bug in the clang implementation?
Maybe. Isn't there a test for minmax_element in the boost testsuite? (although I don't know if it specifically checks for the very particular case where potential_min_result is useful (2 equal consecutive values achieving the minimum, the first one with an even index, IIRC)). Actually, reading the standard, it uses a different definition of minmax_element: the second element is not max_element but something like last_max_element. -- Marc Glisse