const auto x = expr;
differs from
auto x = expr;
as
const X x = expr;
differs from
X x = expr;
So use const auto and const auto& a lot, just like you would if you didn’t have auto.
Overload resolution is not affected by return type: const or no const on the lvalue x does not affect what functions are called in expr.