VS2015拒绝未命名类型中的类内初始化

VS2015 rejects in-class initialization in unnamed type

本文关键字:初始化 拒绝 未命名 类型 VS2015      更新时间:2023-10-16

以下代码在VS2015中编译失败。

struct Foo
{
    Foo(int value) { }
};
struct Moo
{
    struct
    {
        Foo foo = 0;
    } fooHolder;
};

int main()
{
    Moo moo;
}

显示以下错误。

1>c:xxxmain.cpp(81): error C2512: 'Foo' : no appropriate default constructor available
1>          This diagnostic occurred in the compiler generated function 'Moo::<unnamed-type-fooHolder>::(void) restrict(cpu, amp)'

如果给未命名的结构一个名称,代码就会编译。

struct NamedHolder
{
    Foo foo = 0;
} fooHolder;

用clang和gcc编译的代码。http://coliru.stacked-crooked.com/a/3b4ab035a967eed9

是否拒绝有效代码?

这段代码非常好,它使用VS2015 Update 1 RC编译(刚刚验证)。也许你错过了什么。我测试的系统:

Microsoft Visual Studio社区2015

版本14.0.24627.00更新1 RC

Microsoft.NET Framework

版本4.6.01040

安装版本:社区

Visual C++2015 RC 00322-0000-00000-AA392Microsoft Visual C++2015 RC