2

C++ 的统一初始化语法修复了最令人头疼的 parse。耶。但是在处理初始化列表时会引入混乱。嘘。现有的行为是:

std::vector<int> the_vec{4};

将调用std::vector(std::initializer_list<T> init)而不是std::vector(size_type count);.

这个决定的理由是什么?特别是由于语言委员会正在发明新的语法,在我看来,其他可能的设计可能是:

  • 要求通过做来调用初始化列表构造函数std::vector the_vec = { 4 };。当然,这不再是“统一的”,但对我来说,要求所有初始化列表使用使用一种形式在概念上似乎更简单,尤其是当该形式与 C 中对象的聚合初始化相匹配时。

  • 要求通过做来调用初始化列表构造函数std::vector the_vec{{4}};。这在我看来在概念上也更简单。

  • 仅当调用其他构造函数std::vector the_vec{{4}};时才需要调用初始化列表构造函数。the_vec{4}我不太喜欢这样,因为很难判断在调用点调用了哪个构造函数,但至少这意味着不再需要旧的构造函数语法。

4

0 回答 0