VS2015拒绝未命名类型中的类内初始化
VS2015 rejects in-class initialization in unnamed type
以下代码在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
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 在C和C++中初始化结构中的数组
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 海湾合作委员会拒绝列表参数的初始化
- VS2015拒绝未命名类型中的类内初始化