だから私は(私はgccのバージョン5.1.0を使用しています)このコードを書き、それがコンパイルされたときに種類の驚いた:実際にタイプの宣言ごとにグローバル変数を作成できますか?
struct Mine
{
const int* ptr;
Mine(const int x)
: ptr([=]()
{
static const int n = x;
return &n;
}()
){}
};
Mine first = 12;
Mine second = 13;
私は驚いていた理由は、Mine
の各宣言は、新たな「グローバル」を作成することです変数。だからここ
は質問です:
私はこれを行うには許されることになっているだろうか?
[ラムダ関数オブジェクトの静的変数はどのように機能しますか?](https://stackoverflow.com/questions/8391058/how-do-static-variables-in-lambda-function-objects-work) –
'n'が実際に2つのオブジェクト間で異なる値であるかどうか確認しましたか?通常の関数では、 'static'変数は最初の呼び出しでのみ初期化されるためです。 –