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

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

130得票4回答
C++11中的"return {}"语句是什么意思?

这个陈述的意思是什么?return {}; C++11中的noexcept关键字表示在可预见情况下不会抛出异常,当需要避免异常处理延迟或者提高代码性能时可以使用它。return NULL; 或者return nullptr;

123得票7回答
如何在成员初始化列表中初始化数组成员

class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; };...

63得票1回答
从初始化列表初始化std::tuple

我在想元组是否可以通过初始化列表来进行初始化(更准确地说,通过初始化列表的初始化列表)?考虑到元组的定义: typedef std::tuple< std::array<short, 3>, std::array<float, ...

56得票3回答
删除默认构造函数。有时候仍然可以创建对象...

关于C++11统一初始化语法的天真、乐观和极其错误的看法 我认为自从C++11以来,用户定义的类型对象应该使用新的{...}语法来构造,而不是旧的(...)语法(除了针对std::initializer_list和类似参数的构造函数重载(例如std::vector:size ctor vs ...

52得票4回答
为什么我不能对继承自另一个结构体的结构体使用大括号初始化?

当我运行这段代码时:struct X { int a; }; struct Y : public X {}; X x = {0}; Y Y = {0}; 我理解为:error: could not convert ‘{0}’ from ‘<brace-enclosed ini...

51得票1回答
左边的大括号在变量声明中的含义是什么,例如在 T {x} = y 中?

这个GitHub文件中的代码使用了一种我不熟悉的C++变量"声明"语法。 std::unique_ptr<CRecentFileList> {m_pRecentFileList} = std::make_unique<CRecentFileList>(... (m...

48得票2回答
C++17的聚合初始化扩展是否使花括号初始化变得危险?

似乎有一个普遍的共识,即使用花括号初始化比其他形式的初始化更好,然而自从引入了C++17聚合初始化扩展之后,就存在意外转换的风险。请考虑以下代码:struct B { int i; }; struct D : B { char j; }; struct E : B { float k; }; ...

48得票2回答
在std::array初始化中的花括号省略

假设有一个需要初始化的 std::array。如果使用双括号,那么这是可以的: std::array<int, 2> x = {{0, 1}}; std::array<int, 2> x{{0, 1}}; 在传统的聚合初始化中,使用单个大括号也可以,因为大括号省略...

48得票1回答
为什么Clang和VS2013可以接受移动花括号初始化的默认参数,但GCC 4.8或4.9不行?

如标题所述,我有一个短的演示程序,在所有这些编译器上都可以编译,但在使用gcc 4.8和gcc 4.9编译后运行时会出现核心转储: 有什么想法原因是什么吗?#include <unordered_map> struct Foo : std::unordered_map<i...