I think the question is clear enough. Will the auto keyword auto-detect const-ness, or always return a non-const type, even if there are eg. two versions of a f
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.