Я просто написал функцию:
void doSomeStuffWithTheString(const std::string& value) {
...
std::string v = value;
std::cout << value.c_str();
...
}
, но затем я вызываю это с помощью
doSomeStuffWithTheString("foo");
, и она работает. Итак, я бы подумал, что это сработает (const char * для инициализации неявного экземпляра std :: string) значение должно быть передано по значению, но в этом случае передается по (const) ссылке.
Случайно ли неявная временная строка std :: string создана из const char *, когда ссылка имеет значение const? если нет, то как это может работать?
РЕДАКТИРОВАТЬ
что произойдет, если функция будет перегружена
void doSomeStuffWithTheString(const char* value);
, какой из них выберет компилятор?