例えば:
int StrLen(const std::string &s = "default string") {
const std::string &t = "another string"; // BTW, is this line safe?
return s.size();
}
アップデート
SoapBox の結論は正しいですが、その理由は完全には正しくありません。
一時オブジェクトの有効期間は、それを保持する参照と同じになるように自動的に延長されます。
これは通常、いくつかの例外を除いて当てはまります。ひとつはそれ
「関数呼び出しの参照パラメーターへの一時的なバインドは、呼び出しを含む完全な式が完了するまで持続します。」
この例外は、デフォルトの引数のケースに適用されると思います。
別の例外は、SoapBox の回答の追加の例に関連しています。
「関数 return ステートメントの戻り値にバインドされた一時的な有効期間は延長されません。一時的なものは、return ステートメントの完全な式の最後で破棄されます。」