Я взглянул на библиотеки Boost, которые были включены в Технический отчет 1 C++ и пытающийся понять то, что каждый делает.
Я только что закончил выполнять пример для boost::mem_fn
и теперь я задаюсь вопросом какой смысл того, чтобы использовать его вместо лучше boost::bind
. Насколько я понимаю, они оба возвращают функциональный объект, указывающий на функцию членства. Я нахожу mem_fn
столь ограниченный, что я не могу найти сценарий, где использование его было бы лучше, чем bind
.
Я пропускаю что-то? Есть ли какой-либо случай, в котором связывают, не может заменить mem_fn?
mem_fn
намного меньше, чем bind
, так что если вам нужна только функциональность mem_fn
, то вам потребуется намного меньше кода.
boost :: lambda
имеет аналогичное перекрытие функциональности с двумя, которые вы упомянули. Я думаю, что все они развивались с одинаковыми намерениями, примерно в одно время, с разными подходами, что привело к путанице и проблемам несовместимости. Было бы неплохо, если бы все они были объединены под одним зонтом лямбда
.
Итак, нет, не существует всеобъемлющего дизайна, который требовал бы сосуществования обеих библиотек.
Что ж, привязка зависит от mem_fun, так что готово. Как и почему я оставлю, чтобы вы узнали, поскольку, хотя это интересно, у меня нет времени на расследование прямо сейчас (привязка сложна).