¿Cuánto es demasiado con la palabra clave automática C ++ 11?

He estado usando la nuevaauto palabra clave disponible en el estándar C ++ 11 para tipos de plantillas complicadas, que es para lo que creo que fue diseñado. Pero también lo estoy usando para cosas como:

auto foo = std::make_shared<Foo>();

Y más escéptico para:

auto foo = bla(); // where bla() return a shared_ptr<Foo>

No he visto mucha discusión sobre este tema. Parece queauto podría ser usado en exceso, ya que un tipo es a menudo una forma de documentación y controles de sanidad. ¿Dónde dibujas la línea usandoauto y ¿cuáles son los casos de uso recomendados para esta nueva función?

Para aclarar: no estoy pidiendo una opinión filosófica; Solicito el uso previsto de esta palabra clave por parte del comité estándar, posiblemente con comentarios sobre cómo se realiza ese uso previsto en la práctica.

Nota lateral: esta pregunta se trasladó a SE.Programmers y luego a Stack Overflow. La discusión sobre esto se puede encontrar en estemeta question.

Respuestas a la pregunta(14)

Su respuesta a la pregunta