C++14 - Deducing Function Return Type using Auto & Decltype

C++14 allows deducing the return type of functions using the combination of both auto and decltype keywords. From Meyers -
template<typename Container, typename Index>
decltype(auto) access(Container & c, Index i)
{
    return c[i];
}

The equivalent code for C++11 is using the trailing return type syntax -
template<typename Container, typename Index>
auto access(Container & c, Index i) -> decltype(c[i])
{
    return c[i];
}

When decltype is used on a lvalue expression the return type is a lvalue reference!

This seems trivial -
decltype(auto) f1()
{
    int x = 0;
    return x; //decltype(x) is int, so return type of f1 is int
}

This is unexpected -
decltype(auto) f2()
{
    int x = 0;
    return (x); //decltype((x)) is int&, so return type of f2 is int&
}