posso scrivere una funzione su modelli in questo modopassa per valore o riferimento const o ...?
template<class T> void f(T x) {...}
o questo modo
template<class T> void f(T const& x) {...}
Credo che la seconda opzione può essere più ottimale in quanto evita esplicitamente di una copia, ma ho il sospetto che possa fallire anche per alcuni tipi specifici T
(ad esempio, i funtori?). Quindi, quando utilizzare la prima opzione e quando utilizzare la seconda? Ci sono anche questo boost::call_traits<T>::param_type
e boost::reference_wrapper
che erano nelle risposte al mio previous question, ma le persone non li usano ovunque, vero? C'è una regola generale per questo? Grazie.
A rischio di sembrare sciocco, devo chiedere: come potrebbe non funzionare per un funtore? – Beta
@Beta: era un'ipotesi casuale. Sarei interessato se qualcuno potesse spiegare in quali casi possa effettivamente fallire. –
Che cosa stai cercando di raggiungere? Dipende dal codice interno in 'f'. –