¿Cómo evitar los alias y mejorar el rendimiento?

En estoRespuesta de desbordamiento de pila Está demostrado que el alias en C ++ puede ralentizar su código. Y el alias en C ++ no solo se aplica a los punteros, sino también a las referencias, y más generalmente aestos tipos especificados por la norma. Particularmente, hay

un tipo agregado o de unión que incluye uno de los tipos antes mencionados entre sus miembros (incluido, recursivamente, un miembro de una unión agregada o contenida)

Entonces, según tengo entendido, si tengo un código como el siguiente,

 class A{
  public:
   int val;
 };

 void foo(vector<A> & array, int & size, A & a0) {
   for(int i=0;i<size;++i) {
    array[i].val = 2*a0.val;
   }
 }

y es posible quea0 puede alias uno de los elementos enarray, posiblemente también aliassize debido a la cita antes mencionada, entoncesa0 ysize debe cargarse para cada iteración, lo que resulta en una disminución del rendimiento.

Entonces mi pregunta es ¿qué debo hacer con el código para evitar el alias y mejorar el rendimiento?Pasando porconst & no ayudará, ya que no evitará los alias según lo especificado por el estándar. Pasara0 ¿por valor? Pero esto hará una copia dea0 que no me gusta, ya que en la práctica, claseA puede ser muy complejo y copiar es una opción muy costosa.¿Existe una solución general para evitar el alias en C ++? ¿Y si si, que?

Respuestas a la pregunta(2)

Su respuesta a la pregunta