auto f(...)->decltype(expression) { ... return expression; }
auto f(...) {... return expression; }
but on two conditions:
(1) only if there is only one return in the function body (a bit similar to a newly proposed lambda);
(2) you are not allowed to refer to this function using a header (forward declaration, etc).
The second option will guard against the abuse of the usage.
I find it looks ugly, when a long expression is written in the decltype construct.
I think this feature may be particularly useful when writing templates.