25得票1回答
将bool类型的缩小转换应用于列表初始化——奇怪的行为

考虑以下这段C++11代码: #include <iostream> struct X { X(bool arg) { std::cout << arg << '\n'; } }; int main() { double d = 7....

25得票1回答
为什么从两个字符串字面量构建一个包含自定义构造函数的结构体向量会导致崩溃?

你能猜出这个简单程序的输出吗? #include <vector> #include <string> #include <exception> #include <iostream> int main() { try { ...

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

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

21得票1回答
编译器是否认为"A(A&)"会接受rvalues?

我有这段代码struct A { A(); A(A&); }; struct B { B(const A&); }; void f(A); void f(B); int main() { f(A()); } 令我惊讶的是,使用GCC和Clang会失败。例如...

21得票3回答
使用C++17中的空列表初始化构造函数时出现编译错误

当尝试转移到C++17时,我遇到了一个奇怪的问题。问题在于,在默认构造函数的情况下,某些东西(我不确定是什么)在C++17中发生了改变,导致列表初始化的工作方式发生了变化。我试图搜索https://en.cppreference.com/w/cpp/language/list_initiali...

20得票3回答
为什么自动类型推断和模板类型推断在大括号初始化器方面存在差异?

我知道,给定一个花括号初始化列表,auto将推断出std::initializer_list类型,而模板类型推断将失败: auto var = { 1, 2, 3 }; // type deduced as std::initializer_list<int> templa...

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

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

19得票2回答
函数参数的默认值通过列表初始化进行初始化

有人能帮我解决下面这个问题吗? 这是一个简单的代码:#include <vector> struct A { std::vector<int> vec; }; void func (A &&a = {}) {} int main() { ...

19得票2回答
使用列表初始化(花括号)分配向量大小

我该如何实现以下代码的等效功能:#include <vector> size_t bufferSize = 1024 * 1024; std::vector<unsigned char> buffer(bufferSize, ' '); 使用列表(花括号)初始化?当我...

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

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