DaleKim
It does enable the use of lambda's though, which are unutterable types, so it necessitates auto...
You can implicitly convert them to a std::function (it's not computationally free though, so if you can get away with it, the auto is better).
If anyone is wondering why the type is unutterable, lambdas in C++ are basically syntactic sugar for functors and the compiler needs to give them a type but the standards committee decided it would be best if the type was completely up to the compiler and the does not need to be known to the programmer (and should not clash with any user-defined name, well it technically doesn't need a name, just a way for the compiler to reference it)