В чем преимущество Boost.Functional по сравнению с Boost.Bind? - PullRequest
3 голосов
/ 14 ноября 2011

Я никогда не использовал Boost.Functional , только кратко прочитал его документацию.Похоже, это улучшение стандартного <<em> функционального > заголовка.

Пример на главной странице Boost.Functional ( Использование раздел) был выбран в качестве введения в библиотеку.То же самое можно сделать проще, используя Boost.Bind (или Boost.Lambda ).Кроме того, Boost.Bind является отличной альтернативой другим инструментам из заголовка <<em> функциональный >.

Мне интересно, есть ли что-нибудь из Boost.Функциональный заголовок или STL <<em> функциональный >, который не может быть сделан с помощью Boost.Bind ?Или любые другие преимущества Boost.Functional ?

1 Ответ

2 голосов
/ 14 ноября 2011

Если вы посмотрите на http://www.boost.org/doc/libs/1_47_0/libs/functional/index.html,, это говорит:

Заголовок functions.hpp предоставляет улучшения для объекта функции адаптеры, указанные в стандартной библиотеке C ++ (разделы 20.3.5, до 20.3.8). Улучшения в основном возможны благодаря два изменения:

  • Мы используем шаблоны Boost call_traits, чтобы избежать проблемы ссылок на ссылки и повысить эффективность передачи параметров.
  • Мы используем два шаблона классов свойств объектов функций, чтобы избежать необходимости использования ptr_fun с адаптерами в этой библиотеке.

Использование

Использование этих адаптеров должно быть почти таким же, как использование адаптеры объектов стандартной функции; единственные различия в том, что вы нужно написать boost :: вместо std ::, и вы получите меньше головные боли.

Никто больше не использует "ptr_fun" (когда у вас есть Boost.Bind), так что остается только иметь дело с "ссылками на ссылки" Это отвечает на ваш вопрос?

...