2010-07-14 2 views
3

У меня есть класс, который содержит boost :: function как один из его аргументов. Я должен сделать это равенство класса сопоставимым, но функция boost :: не является сопоставимым равенством. Есть ли простой способ решения этой проблемы?сравнение функции ускорения C++

Thanks, Gokul.

+0

Какую версию повышения вы используете? Как вы создаете функторы? –

+0

boost 1.43 - последняя версия – Gokul

ответ

2

boost :: function is not eq_compare, потому что есть хороший способ справиться с тем фактом, что многие функторы не являются eq_compare. Вот немного проницательности в этом: http://www.boost.org/doc/libs/1_35_0/doc/html/function/faq.html#id690470

К сожалению, сильные стороны решили не применять политический подход, который позволил бы нам выбрать альтернативу, т.е. реализацию «только для сравнения или сравнения», оставив нас немного чучела здесь. Там может быть несколько дрянных обходные пути для этой ситуации, но я хотел бы предложить либо: повышение :: функции

  1. ров в целом и свернуть свой собственный, если вы действительно, действительно нужна эта eq_comparable вещь. или
  2. Посмотрите, может ли ваша проблема решить совсем по-другому. Например, многие люди используют функцию <> для реализации своего рода системы событий. Если это так, то вы должны посмотреть на boost :: сигналы.
+0

Я никогда не понимал, почему обычные указатели функций сопоставимы, поэтому почему вы не можете сравнить функцию boost, которая для меня кажется оболочкой для указателей на функции? –