Какой смысл того, чтобы использовать повышение:: mem_fn, если у нас есть повышение:: связать?

Я взглянул на библиотеки Boost, которые были включены в Технический отчет 1 C++ и пытающийся понять то, что каждый делает.

Я только что закончил выполнять пример для boost::mem_fn и теперь я задаюсь вопросом какой смысл того, чтобы использовать его вместо лучше boost::bind. Насколько я понимаю, они оба возвращают функциональный объект, указывающий на функцию членства. Я нахожу mem_fn столь ограниченный, что я не могу найти сценарий, где использование его было бы лучше, чем bind.

Я пропускаю что-то? Есть ли какой-либо случай, в котором связывают, не может заменить mem_fn?

13
задан José Tomás Tocino 21 June 2010 в 19:57
поделиться

3 ответа

mem_fn намного меньше, чем bind, так что если вам нужна только функциональность mem_fn, то вам потребуется намного меньше кода.

6
ответ дан 2 December 2019 в 00:31
поделиться

boost :: lambda имеет аналогичное перекрытие функциональности с двумя, которые вы упомянули. Я думаю, что все они развивались с одинаковыми намерениями, примерно в одно время, с разными подходами, что привело к путанице и проблемам несовместимости. Было бы неплохо, если бы все они были объединены под одним зонтом лямбда .

Итак, нет, не существует всеобъемлющего дизайна, который требовал бы сосуществования обеих библиотек.

1
ответ дан 2 December 2019 в 00:31
поделиться

Что ж, привязка зависит от mem_fun, так что готово. Как и почему я оставлю, чтобы вы узнали, поскольку, хотя это интересно, у меня нет времени на расследование прямо сейчас (привязка сложна).

2
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: