As many on the /r/cpp thread for this said, the ultimate result:
auto x = int(foo(blah));
is no shorter than the version with an explicit template parameter for the return type:
auto x = foo<int>(blah);
That doesn't apply to situations where you can genuinely take advantage of the implicit conversion:
takes_int_param(foo(blah));
But frankly the extra typing in an explicit version is worth it for improved code clarity:
takes_int_param(foo<int>(blah));
That's just if you get it right - if you get something wrong and end up with a compiler error, the error message for the implicit conversion is going to be far more complex than for an explicit return type parameter.