С++ 11 включает алгоритм std::partition_point(). Однако во всех случаях, которые я пробовал, он дает тот же ответ, что и std::lower_bound(). Единственное отличие - удобный параметр T& value.
Я что-то пропустил или эти две функции выполняют более или менее одно и то же?