Сравнение C ++ Boost - PullRequest
       23

Сравнение C ++ Boost

3 голосов
/ 14 июля 2010

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

Спасибо, Gokul.

1 Ответ

2 голосов
/ 14 июля 2010

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

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

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