Почти наверняка нет.Бинарный поиск требует определенного порядка отношений и умения сравнивать меньше.Компилятор не может предположить, что такое существует, и даже если он найдет его, он не может предположить, что он определяет отношение эквивалентности, которое соответствует ==
.Также возможно, что компилятор не может определить, что функция, определяющая отношение порядка, не имеет побочных эффектов.(Если он имеет побочные эффекты или если какая-либо операция в выражении имеет побочные эффекты, компилятор должен учитывать поведение короткого замыкания ||
.) Наконец, даже если компилятор сделал все это ... что произойдет, если я тщательно выбралпорядок сравнений, так что наиболее частый случай - первый.Такая «оптимизация» может даже оказаться пессимизацией.
«Правильно» справиться с этим - создать карту, отображающую строки в указатели на функции (или на полиморфные функциональные объекты, если какое-то состояниеучастие).