私はちょうど関数を書いた:
void doSomeStuffWithTheString(const std::string& value) {
...
std::string v = value;
std::cout << value.c_str();
...
}
しかし、私はこれを
doSomeStuffWithTheString("foo");
そしてそれは動作します。したがって、これが機能するためには (std::string の暗黙的なインスタンスを初期化するための const char*)、値を値渡しする必要があると考えていたでしょうが、この場合は (const) 参照によって渡されます。
参照が const の場合、const char* からインスタンス化された暗黙の一時的な std::string は偶然ですか? そうでない場合、これはどのように機能するのでしょうか?
編集
関数がオーバーロードされるとどうなりますか
void doSomeStuffWithTheString(const char* value);
どちらがコンパイラを選択しますか?