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