皆さん、こんにちは!
自分のコードを調べてみると、次の興味深い行にたどり着きました。
const CString &refStr = ( CheckCondition() ) ? _T("foo") : _T("bar");
今、私は完全に途方に暮れており、なぜそれが合法なのか理解できません. 私が理解している限り、const 参照は右辺値または左辺値のいずれかで初期化する必要があります。初期化されていない参照は存在できません。しかし ()?演算子は、参照に値を割り当てる前に CheckCondition() 関数を実行します。CheckCondition() が実行されている間、refStr は存在しますが、まだ初期化されていないことがわかります。CheckCondition() が例外をスローしたり、goto ステートメントで制御を渡したりするとどうなりますか? 参照が初期化されないままになりますか、それとも何か不足していますか?