これが安全で定義されているかどうかを誰かに教えてもらえますか:
class RefClass
{
public:
RefClass(int i) { this->i = i; }
int& GetRef() { return i; }
private:
int i;
};
RefClass rc(10);
int* refp;
{
refp = &rc.GetRef();
}
*refp = 20;
具体的には、ネストされたスコープで返された参照の有効期間と、そのスコープで参照され、そのスコープが解消された後に左辺値として逆参照できるかどうかに関心があります。
このコードは VS2012 で期待どおりにコンパイルおよび実行されますが、それは次のバージョンでそうなるという意味ではないため、決定的な答えを見つけようとしています。