plantilla pasar por valor o referencia constante o ...?
Puedo escribir una función con plantilla de esta manera
template<class T> void f(T x) {...}
o de esta manera
template<class T> void f(T const& x) {...}
Supongo que la segunda opción puede ser más óptima ya que evita explícitamente una copia, pero sospecho que también puede fallar para algunos tipos específicosT
(por ejemplo, ¿functors?) Entonces, ¿cuándo debería usar la primera opción y cuándo usar la segunda? También hay estoboost::call_traits<T>::param_type
yboost::reference_wrapper
que estaban en las respuestas a miPregunta anterior, pero la gente no los usa en todas partes, ¿verdad? ¿Hay una regla general para esto? Gracias.