Есть ли библиотека с функциями STL, такими как std::sort()
, std::binary_search()
, std::lower_bound()
, std::upper_bound()
, принимающая предикаты трехстороннего сравнения (которые возвращают -1 при меньшем, 0 при равном, 1 при большом) вместо меньший предикат (верно при меньшем, ложно при равном или большом)?
Конечно, менее существенный предикат можно легко выделить из существующего трехстороннего предиката (например, [](A a, B b) { return compare3(a,b)<0; }
), но это приводит к дополнительному количеству обращений к предикату.