more const-correctness and avoid ambiguity in overloaded function