编译器如何知道是否调用 const 重载?

How does the Compiler Know Whether to Call the const Overload?

给定 string foo,当我调用时:

auto bar = foo.begin();

string::begin 有 2 个重载。一个 returns 一个 string::iterator,另一个 returns 一个 string::const_iterator。我怎么知道bar的类型?这只是基于foo是否是const吗?

Is this just based on whether foo is const or not?

auto 用于推导 精确类型 *


How to select iterator type using auto variable?间接同意这个回答。

*取自:How do I get a const_iterator using auto?