const std::string & s = "hoge";

としたとき、

(1) "hoge"で初期化された一時オブジェクトが生成される
(2) sに一時オブジェクトの参照が代入される

という認識であっていますか?
またこの場合、sの有効期間はどうなりますか?