328 のようなコードでは、関数の型にかかわわりなく s は破棄される。
だから関数の型が CString& では正常に返せない。
関数の型が CString の場合は、return の時点での s のコピーが渡る。

コンパイラによっては s の実体をとっておき、それをそのまま返すように最適化
するかも知れないが、漏れは見た事がない。