как std :: string справляется с этой уловкой?

Я просто написал функцию:

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);

, какой из них выберет компилятор?

5
задан lurscher 25 January 2012 в 16:52
поделиться