Mam następującą funkcjęJak przekazać wartość rvalue C++ functor do przechwytywania lambda?
template<class Function>
void f(Function&& g) {
h(..., [&g](){g();});
}
Jest to funkcja f
przyjmując funkcję lambda lub funktor jako argument. Wewnątrz wywołuje funkcję h
, do której przekazuję lambdę jako argument, który wywołuje g
i odbiera g
przez przechwycenie.
- Czy powinienem podać
g
lub&g
w polu przechwytywania lambda? - Czy funktor będzie skopiowany z powyższym kodem?
normalnie pełnić podobną obiekty są przekazywane przez wartość. Kopiowanie ich powinno być niezwykle tanie. Jeśli twoje obiekty nie są takie, prawdopodobnie robisz coś nie całkiem w porządku. –