为什么仅在列表初始化的情况下才会出现缩小转换警告?

亚历克斯

我有以下代码:

class A
{
    public:
        A(const unsigned int val) : value(val) {}

        unsigned int value;
};

int main()
{
    int val = 42;
    A a(val);
    A b{val};       // <--- Warning in GCC, error in Microsoft Visual Studio 2015

    return 0;
}

为什么仅在使用列表初始化的情况下才会出现缩小转换警告?

songyuanyao

自C ++ 11起引入列表初始化功能,该功能禁止在内置类型之间进行隐式缩小转换。同时,另外两个使用括号和等号的“旧式”(C ++ 98起)初始化形式

int val = 42;
A a(val);
A a = val;

不要更改其行为以使其符合列表初始化,因为这可能会破坏大量的旧代码库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不初始化列表的情况下追加到Python列表?

缩小列表初始化的转换是错误还是警告?

强制缩小转换警告

为什么会出现错误:初始化Tensorflow?

列表初始化时需要缩小转换

为什么可以在不表示'self'关键字的情况下初始化python class属性?

为什么gcc警告仅缩小统一初始化的转换范围?

为什么在这种特殊情况下git恢复后会出现冲突

为什么仅在特定的多处理方案中访问共享列表时才会出现“管道破损”错误?

为什么会出现内存泄漏(此初始化产生段错误)?

为什么默认情况下会初始化局部变量?

C ++:为什么会出现错误:“数组初始化程序必须是初始化程序列表或字符串文字”?

为什么在C ++中出现“初始化”:无法从“初始化列表”转换为“ _Objty”的错误?

正确安装gem时,为什么会出现“ NameError:未初始化的常数Pry”?

为什么在这种情况下删除目录会出现错误?

使用初始化程序列表时,缩小转换范围是什么?

为什么在这种情况下会出现拆箱?

为什么会出现此错误:ConnectionString属性尚未初始化

如何将ASP MVC表单下拉列表设置为空白,但仅在基础值未初始化的情况下?

我如何有一个html表格,仅在大于屏幕的情况下才会出现垂直滚动条

如何在不得到编译器警告的情况下初始化char * args []

为什么用'operator ++'进行引用初始化会出现错误

为什么尝试将葡萄与Rails结合使用时会出现“未初始化的常量API”失败的情况?

为什么会出现“本地变量可能尚未初始化”的错误?

为什么会出现“未初始化的常量ApplicationController :: SessionHelper”错误?

为什么默认情况下会调用超类指定的初始化程序?

在没有stdlib的情况下链接汇编代码时,为什么会出现僵尸?

为什么只有在括号初始化对象时才需要从 int 到 float 的缩小转换?

为什么在添加短裤时会出现从 int 到 short 的缩小转换警告?(C++)