Don't use auto in place of using regular type declarations, but other than that I don't think that the sky is falling quite so hard as Matias is worried about.
In general, use auto to:
- avoid repeating yourself.
- refer to an un-uterable type.
- store something that really is dependent on the result of an expression.
You get yourself in trouble when you use auto to simply avoid thinking about types and their consequences.
Used appropriately, though, auto has worthwhile benefits, including a reduction of maintainance effort, simpifying template code, and reducing visual clutter.