me puede escribir una función con plantilla de esta maneraplantilla pasar por valor o referencia const o ...?
template<class T> void f(T x) {...}
o esta forma
template<class T> void f(T const& x) {...}
supongo que la segunda opción puede ser más óptimo, ya que evita explícitamente una copia, pero sospecho que puede también fallan para algunos tipos específicos T
(por ejemplo, funtores?). Entonces, ¿cuándo debería usar la primera opción y cuándo usar la segunda? También hay este boost::call_traits<T>::param_type
y boost::reference_wrapper
que estaban en las respuestas a mi previous question, pero la gente no los usa en todas partes, ¿verdad? ¿Hay una regla general para esto? Gracias.
A riesgo de parecer tonto, debo preguntar: ¿cómo podría fallar para un funtor? – Beta
@Beta: fue una suposición aleatoria. Si alguien pudiera explicar en qué casos realmente puede fallar, estaría interesado. –
¿Qué es lo que estás tratando de lograr? Depende del código interno en 'f'. –