c++ - VS2015拒绝未命名类型的类内初始化

标签 c++ visual-studio visual-c++ visual-studio-2015

以下代码无法在 VS2015 中编译。

struct Foo
{
    Foo(int value) { }
};

struct Moo
{
    struct
    {
        Foo foo = 0;
    } fooHolder;
};


int main()
{
    Moo moo;
}

显示以下错误。

1>c:\xxx\main.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 Community 2015

Version 14.0.24627.00 Update 1 RC

Microsoft .NET Framework

Version 4.6.01040

Installed Version: Community

Visual C++ 2015 RC 00322-20000-00000-AA392 Microsoft Visual C++ 2015 RC

...

关于c++ - VS2015拒绝未命名类型的类内初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33845459/

相关文章:

c++ - std::promise 可以从非 POD 对象生成吗?

c++ - Delphi 和 C++ 结构

c++ - 由 C++ 编译器优化时,F2C 翻译的代码会中断

asp.net - 将 "debug"和 "release"文件夹与 ASP.NET Web 应用程序一起使用

c# - Microsoft SQL Server,在服务器资源管理器中创建新表

c++ - std::make_shared 作为默认参数不编译

java - fread() 读取零值

c++ - 是否有可以在 Win32 和 MacOSX 系统上使用的跨平台 unicode 字符串类?

windows - 应该如何在 Windows 上使用开源库?

c++ - VS2003 C++ 中不寻常的堆大小限制