81得票4回答
用两种类型声明一个变量:"int char"

我是一名C++初学者,正在阅读Bjarne Stroustrup的《Programming: Principles and Practice Using C++》。在“3.9.2 不安全的类型转换”一节中,作者提到:当初始化器为整型字面值时,编译器可以检查实际值并接受不会导致缩小的值:int ...

77得票1回答
为什么emplace_back()函数不使用统一初始化?

以下是代码:#include <vector> struct S { int x, y; }; int main() { std::vector<S> v; v.emplace_back(0, 0); } 使用GCC编译时,会出现以下错误:I...

48得票4回答
为什么这个使用统一初始化的代码片段能够在g++4.6中编译,但在g++4.7中却不能?

请注意,派生类使用C++11统一初始化语法来调用基类构造函数。class base { protected: base() {} }; class derived : public base { public: derived(...

47得票1回答
C++标准是否保证统一初始化是异常安全的?

#include <iostream> using namespace std; struct A { A() { cout << "A" << endl; } ~A() { cout << "~A" << end...

34得票1回答
大括号的数量如何影响统一初始化?

考虑一下以下代码片段: #include <iostream> struct A { A() {} A(const A&) {} }; struct B { B(const A&) {} }; void f(const A&) { std...

33得票3回答
为什么我不能在初始化列表中使用统一初始化语法来初始化引用?

也就是说,为什么会出现这样的情况: struct S {}; struct T { T(S& s) : s{s} {} S& s; }; int main() { S s; T t{s}; } 请给我一个使用GCC 4.7编译器的错误...

27得票3回答
为什么 'std::vector<int> b{2};' 创建了一个只有1个元素的向量,而不是有2个元素的向量?

我最近几天一直在尝试 C++11,然后发现了一个奇怪的问题。 如果我想对 int 进行统一初始化:int a{5}; 但如果我对一个std::vector做同样的操作:std::vector&lt;int&gt; b{2}; 该代码并未构造一个包含两个元素的数组,而是构造了一个只有一个值为2...

26得票3回答
元组的统一初始化

今天,我遇到了一个问题,我有一个元组向量,其中元组可能包含多个条目。现在,我想将我的元组向量转换为对象向量,使得元组的条目与对象的统一初始化完全匹配。 下面的代码可以完成任务,但它有点笨拙。我在想是否可能推导出通用解决方案,如果元组恰好与对象的统一初始化顺序相匹配,则可以构造对象。 当要传...

25得票1回答
显式复制构造函数和统一初始化

显式复制构造函数禁止像 Foo foo = bar; 这样的操作,强制使用 Foo foo(bar); 进行复制。此外,显式复制构造函数也禁止从函数中返回对象值。然而,我尝试使用花括号替换复制初始化,像这样:struct Foo { Foo() = default; expli...

19得票2回答
T v{}初始化。

我正在阅读C++11标准,但是无法确定是否 T x{}; 自动存储的对象是value-initialized或default initialized。它确实非常清楚地说明: 10 如果一个对象的初始化程序是空括号集,即(),则该对象将进行value初始化。 并且 11 如果未...