В чем преимущество Boost.Functional по сравнению с Boost.Bind?

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

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

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

1 ответ

Если вы посмотрите на 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), так что просто остается иметь дело с "ссылками на ссылки". Это отвечает на ваш вопрос?

Другие вопросы по тегам