4
可能性があり、私はクラスの静的データメンバは、このようなグローバル変数を初期化し、参照タイプにすることができたとします問題、コンパイラのバグ
#include <iostream>
#include <stdio.h>
const unsigned int global =0x1fee;
struct K {
int a;
static const int & iref;
};
const int & K::iref=global;
int main()
{
printf("%d\n",K::iref);
return 0;
}
しかし、私のVC++ testで、コンパイルできますが、実行時に例外が生成されます。 VC++のバグですか?私は何か悪いことをしましたか?
意図的に 'unsigned int 'を' signed int& 'にバインドしようとしていますか? – dyp
いいえ、問題のテスト用です。 'global'をsigned intに変更しても問題ありません。だから、バグのように見えますが、私はダブル確認したいです – JavaMan
本当にバグのようです。 'unsigned int 'を' signed int const& 'に束縛することで、一時的な' unsigned int'が作成され、その存続期間が目的の参照変数( 'K :: iref')まで拡張されます。 MSVCはその寿命延長を実行しないようです。 – dyp