以下代码在使用时会意外失败:
struct Foo {
std::string b = a + " world"; // a not declared yet
std::string a = "Hello";
};
由于[class.base.init]/13.3,由于定义a
,我们正在尝试使用struct Foo {
std::string a = "Hello";
std::string b = a + " world";
};
:
然后,非静态数据成员按照它们在类定义中声明的顺序进行初始化(同样,无论 mem-initializers 的顺序如何)。
但是这段代码呢?
var stockFiles = System.IO.Directory.GetFiles(fullDirectoryPath, "Open25_Stock*");
13.3在这里似乎也很合理(使代码定义良好),但是我不确定它是否涵盖了上面清单中的情况,因为它提到了mem-initializers但错过了这个特定的案(IMO)。我承认这可能只是缺乏英语能力,所以我更愿意问。
标准中引用的段落是否构成代码