Un simile question è stato chiesto prima, ma sono ancora confuso. L'STL, credo, passa esclusivamente per valore, in quanto il passaggio per riferimento potrebbe avere conseguenze in un ambiente multi-thread. Dì, quando due o più thread eseguono un lambda mutabile. Attualmente uso un riferimento universale, quando voglio solo richiamare un lambda:il passaggio lambda in base al valore o al riferimento rende più semplice l'inline?
template <typename F>
inline void invoke(F&& f)
{
f();
}
Questo si lega a qualsiasi oggetto funzione, proprio come una const&
sarebbe, ma forse è una cattiva idea per inline. Un lambda passato per copia è più facile da incorporare dal compilatore? Mi piacerebbe che il lambda passato fosse il più "inelegabile" possibile.
Cos'è un lambda mutabile? –
mutable \t - \t consente al corpo di modificare i parametri acquisiti dalla copia e di chiamare le loro funzioni membro non const – user1095108
Oh, c'è una parola chiave per questo. Dimenticato. –