Я только что написал функцию:
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);
, какая из них выбереткомпилятор?