我是否真的可以使用Type的每个声明创建一个全局变量?

时间:2017-08-03 01:33:29

标签: c++ lambda static

所以我编写了这段代码并且在编译时感到很惊讶(我使用的是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的每个声明都会创建一个新的“全局”变量。

所以这就是问题:

我应该被允许这样做吗?

1 个答案:

答案 0 :(得分:4)

只有一个column 0,所有n都相等。

所以,没有。