当我使用初始值设定项列表时什么是缩小转换?

What is narrowing cast when I use initializer list?

一个人告诉我这样写更有效

SomeType val{another_val};

SomeType val = another_val;

因为在第二种情况下我们缩小了演员阵容。

你能解释一下这是什么吗?使用初始化列表进行初始化是否更有效?

使用大括号是使代码更安全的另一种方式,仅此而已。例如

int main() {
    unsigned n = -1.0; // hopefully a compiler warning, undefined behaviour
    unsigned m {-1.0}; // certainly a compiler diagnostic
}