void fn(string &s)
{
//....
}
//use the function
fn("helloworld");
まず、非 const 文字列を const char 文字列で開始するのは間違っています。
パラメータに const を追加すると、コンパイルされます。
しかし、スタック上の一時的なオブジェクト文字列 ("helloworld") を参照するのは正しいでしょうか?
string("helloworld") が呼び出されることは確かですか?
--
編集します。
一時的な文字列が作成された場合、コンパイラは std::string(const char*) のコンストラクターからオブジェクト string("helloworld") が const であるとどのように判断しますか?