¿Cuándo usar referencias const sobre valor const en función?

En un sistema de 64 bits, const& es de 8 bytes. Para valores y objetos menores de 8 bytes, tiene sentido pasar por valor en lugar de por referencia. Incluso un objeto de 8 bytes es más barato para copiar que para pasar la referencia, luego acceder al objeto.

¿En qué umbral debería preferir una referencia de const sobre un valor de const?

Para valores y objetos menores de 8 bytes, tiene sentido pasar por valor en lugar de por referencia. Incluso un objeto de 8 bytes es más barato para copiar que para pasar la referencia, luego acceder al objeto.

Las referencias no están garantizadas para ser implementadas como punteros. De hecho, según §8.3.2 / 4:

No se especifica si una referencia requiere o no almacenamiento


¿En qué umbral debería preferir una referencia de const sobre un valor de const?

La situación es bastante simple:

  • Usa referencias const cuando solo quieres leer el valor
  • use valor cuando siempre terminará haciendo una copia del objeto dentro de la función
  • Usa la referencia cuando quieras modificar el objeto dentro de la función.