vendredi 3 novembre 2017

Passing forwarding reference as lambda capture

Consider following code:

template <typename C>
void boo (C&& c) {
    c ();
}

template <typename T>
void foo (T&& v) { // (X)
    boo ([&v] () { some_func (std::forward<T> (v)); }); // (Y)
}

As far as I am concerned v in (X) is a forwarding reference. Is v also a forwarding reference in (Y) if it was captured by reference? Or should I write it differently to take advantage of forwarding?

Aucun commentaire:

Enregistrer un commentaire