31得票3回答
为什么std::make_unique没有使用列表初始化来实现?

https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique写道std::make_unique可以实现为 template<typename T, typename... Args> std::unique_pt...

19得票2回答
返回表达式中 `{}` 的含义

我无意中发现以下代码是可以编译通过的:#include <string> #include <iostream> class A{ int i{}; std::string s{}; public: A(int _i, cons...

8得票1回答
花括号初始化 vs. 圆括号错误

我正在为GCC提交一个bug,但我想再次确认一下。 考虑以下程序: #include <utility> template<typename T, typename A> void F(A&& a) { T(std::forward<A>...

22得票3回答
为什么在这个例子中成员没有得到零初始化?

这是关于C++11的特定内容: #include <iostream> struct A { A(){} int i; }; struct B : public A { int j; }; int main() { B b = {}; st...

617得票5回答
使用花括号进行列表初始化有哪些优点?

MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); 为什么?

7得票1回答
S()和S{}有什么区别?

在下面的代码中,这两个对value的赋值之间有什么区别?在两种情况下,value.v都会被默认构造,x会被初始化为42吗? struct S { std::vector<int> v; int x = 42; }; S value; void foo() { ...

18得票2回答
C++ 初始值列表初始化失败,拷贝构造函数被调用

基于这段代码 struct Foo { Foo() { cout << "default ctor" << endl; } Foo(std::initializer_list<Foo> ilist) { ...

9得票2回答
列表初始化 - C++14中有什么变化?

这两行来自cppreference 这两个语句有什么区别吗?我没有看出任何区别。 c++14之前 如果大括号初始化列表为空且T是一个带有默认构造函数的类类型,则进行值初始化。否则,如果T是一个聚合类型,则执行聚合初始化。 c++14之后 如果T是一个聚合类型,则执行聚合初始化。否则,如果...

12得票1回答
为什么在构造函数初始化列表中使用C++11花括号初始化方式无法工作,而括号初始化方式可以?

当在构造函数初始化列表中初始化引用抽象类型时,如何对{}初始化与()初始化进行区分?请看下面的Bar类:class AbstractBase { public: AbstractBase() {} virtual ~AbstractBase() = default; ...

14得票2回答
标准库中潜藏着哪些贪心初始化列表的例子?

自C++11起,标准库容器和std::string具有接受初始化列表的构造函数。此构造函数优先于其他构造函数(即使在其他“最佳匹配”标准被忽略的情况下,正如@JohannesSchaub-litb在评论中指出的那样)。这导致将所有括号形式()的构造函数转换为它们的花括号版本{}时出现了一些众所...