Какой самый элегантный способ определить, действительно ли вызов std::sort(begin, end)
изменил диапазон?
Вот мои две идеи:
(a) проверить, отсортированы ли уже O (n):
if (already_sorted(begin, end)) { return false; }
std::sort(begin, end);
return true;
(b) отслеживать изменения в компараторе (это безопасно?):
bool modified = false;
std::sort(begin, end, [&modified](T a, T b){ modified |= a<b; return a<b; });
return modified;
Есть ли лучший способ?