簡単な例:
struct A
{
A() : i(int()) {}
const int& i;
};
gccからのエラー:
'A :: i'への一時的なバインドは、コンストラクターが終了するまでのみ持続します
12.2p5からのルール:
コンストラクターのctor-initializer(12.6.2)の参照メンバーへの一時的なバインドは、コンストラクターが終了するまで持続します。
質問
このルールの論理的根拠を知っている人はいますか?参照が死ぬまで一時的に生きることを許可する方が良いように私には思えます。