これはできません。参照は何かにバインドする必要があります。気に入らないかもしれませんが、null になる可能性のあるポインターとは異なり、参照がある場合は常に何かにバインドされていると想定できるため、クラス全体のエラーを防ぐことができます。
非 const 参照を無効な一時オブジェクトにバインドしようとするため、コード例はとにかく機能しません。
とにかく参照する必要があるのはなぜですか?1 つの解決策は、型に安価なデフォルト コンストラクターがあり、効率的に移動できることを確認してから、次のようにすることです。
MyObject obj;
if([condition])
obj = MyObject([something])
else
obj = MyObject([something else]);
それ以外の場合は、次のいずれかの条件付きコードを 1 つ以上の関数に配置する必要があります。
const MyObject& ref = createObject([condition]);
また
const MyObject& ref = [condition] ? doSomething() : doSomethingElse();
これらのバージョンは両方ともconst参照を使用することに注意してください。これは一時オブジェクトにバインドできます。オブジェクトが非 const でなければならない場合は、再び参照の使用を停止してください。
MyObject obj = createObject([condition]);
戻り値の最適化のおかげで、これはおそらくあなたがしようとしていたことと同じくらい効率的です