以下代码无法在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
是否拒绝有效代码?
答案 0 :(得分:1)
此代码完全正常,它使用VS2015 Update 1 RC(刚验证)进行编译。也许你错过了什么。我测试的系统:
Microsoft Visual Studio Community 2015
版本14.0.24627.00更新1 RC
Microsoft .NET Framework
版本4.6.01040
已安装版本:社区
Visual C ++ 2015 RC 00322-20000-00000-AA392 Microsoft Visual C ++ 2015 RC
...