Rendimiento de pIter! = Cont.end () en for loop

Herb Sutter estaba recibiendo el "Excepcional C ++" últimamente, y tengo serias dudas sobre una recomendación en particular que él da en el Ítem 6 - Objetos temporales.

Se ofrece a buscar objetos temporales innecesarios en el siguiente código:

string FindAddr(list<Employee> emps, string name) 
{
  for (list<Employee>::iterator i = emps.begin(); i != emps.end(); i++)
  {
    if( *i == name )
    {
      return i->addr;
    }
  }
  return "";
}

Como uno de los ejemplos, recomienda calcular previamente el valor deemps.end()&nbsp;antes del bucle, ya que hay un objeto temporal creado en cada iteración:

Para la mayoría de los contenedores (incluida la lista), llamar a end () devuelve un objeto temporal que debe construirse y destruirse. Debido a que el valor no cambiará, volver a calcularlo (y reconstruirlo y volver a ponerlo de nuevo) en cada iteración de bucle es innecesariamente ineficiente e inestable. El valor debe calcularse solo una vez, almacenarse en un objeto local y reutilizarse.

Y él sugiere reemplazar por lo siguiente:

list<Employee>::const_iterator end(emps.end());
for (list<Employee>::const_iterator i = emps.begin(); i != end; ++i)

Para mí, esta es una complicación innecesaria. Incluso si uno reemplaza declaraciones de tipo feo con compactoauto, todavía obtiene dos líneas de código en lugar de una. Aún más, tiene esto.end&nbsp;Variable en el ámbito exterior.

Estaba seguro de que los compiladores modernos optimizarán este pedazo de código de todos modos, porque en realidad estoy usandoconst_iterator&nbsp;aquí y es fácil comprobar si el contenido del bucle está accediendo al contenedor de alguna manera. Los compiladores se volvieron más inteligentes en los últimos 13 años, ¿verdad?

De todos modos, preferiré la primera versión coni != emps.end()&nbsp;en la mayoría de los casos, donde no estoy tan preocupado por el rendimiento. ¿Pero quiero saber con certeza si este es un tipo de construcción en la que podría confiar en un compilador para optimizar?

Actualizar

Gracias por sus sugerencias sobre cómo mejorar este código inútil. Tenga en cuenta que mi pregunta es sobre el compilador, no sobre técnicas de programación. Las únicas respuestas relevantes por ahora son deNPE&nbsp;yEllioh.