It's not like a type error could occur, you're just relieved of having to express the exact type name (which is usually irrelevant anyway).
Originally Posted by Mario F.
And many uses of "auto" can already be simulated.
Without auto you'd be reduced to figuring out the exact type of the complex bind expression. OR, you could add a level of indirection to allow the compiler's type deduction to do things for you:
auto f = boost::bind(... some crazy complex binder ...);
// Do something repeatedly with f
So it becomes clear that the "hiddenness" of the actual type name is no different than how a type name is hidden by a template function. Again, you don't care what F is, you just want to be able to refer to that type easily.
template <typename F>
void with_f(F func_p)
// Do something repeatedly with func_p
// Declare other instances
F a, b, c;