Да, это следовало бы за висящей ссылкой.Похоже, вы беспокоитесь о дизайне интерфейса: «Я почти уверен, что кто-то в конечном итоге сделает это».Пожалуйста, не отклоняйте лямбды и std::function
на этом основании, поскольку они не более опасны, чем любая другая альтернатива.Лямбды - это просто более простой способ определения локальных функторов.std::function
- лучший интерфейс для постоянных, полиморфных функторов, лямбда или нет.
Проблема заключается в том, почему проще захватывать по значению.Пользователь не получит ссылку, если он не напишет &
.Конечно, опасность состоит в том, что кто-то привыкнет запускать все свои лямбда-функции с [&]
, поскольку ссылки «быстрее».Надеюсь, любой такой человек скоро усвоит свой урок ... хотя некоторые счастливые люди просто неисправимы.