Сообщение захват универсальной ссылки в лямбду от 09.02.2020 12:04
Изменено 09.02.2020 12:04 niXman
захват универсальной ссылки в лямбду
привет!
есть такое:
вопрос в том, что я не понимаю как я должен тут поступить...
если 'f' — lvalue, тогда ок.
но если 'f' — rvalue, как быть?
с одной стороны — 'std::move()' тут неуместен, потому что нет инициализации.
с другой — если изменить список захвата так '[f=std::move(f)]' — то, кажется, смысл появляется. но, с третьей стороны, если говорить о измененнном списке захвата — тогда мне кажется более разумным использовать 'std::forward<>()'... оф %)
проясните, плиз.
есть такое:
template<typename F>
void bind(F &&f) {
auto cb = [f](...){ ... }; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// тут я положу 'cb' в некоторый контейнер
}
вопрос в том, что я не понимаю как я должен тут поступить...
если 'f' — lvalue, тогда ок.
но если 'f' — rvalue, как быть?
с одной стороны — 'std::move()' тут неуместен, потому что нет инициализации.
с другой — если изменить список захвата так '[f=std::move(f)]' — то, кажется, смысл появляется. но, с третьей стороны, если говорить о измененнном списке захвата — тогда мне кажется более разумным использовать 'std::forward<>()'... оф %)
проясните, плиз.
захват универсальной ссылки в лямбду
привет!
есть такое:
вопрос в том, что я не понимаю как я должен тут поступить...
с одной стороны — 'std::move()' тут неуместен, потому что нет инициализации.
с другой — если изменить список захвата так '[f=std::move(f)]' — то, кажется, смысл появляется. но, с третьей стороны, если говорить о измененнном списке захвата — тогда мне кажется более разумным использовать 'std::forward<>()'... оф %)
проясните, плиз.
есть такое:
template<typename F>
void bind(F &&f) {
auto cb = [f](...){ ... }; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// тут я положу 'cb' в некоторый контейнер
}
вопрос в том, что я не понимаю как я должен тут поступить...
с одной стороны — 'std::move()' тут неуместен, потому что нет инициализации.
с другой — если изменить список захвата так '[f=std::move(f)]' — то, кажется, смысл появляется. но, с третьей стороны, если говорить о измененнном списке захвата — тогда мне кажется более разумным использовать 'std::forward<>()'... оф %)
проясните, плиз.