Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当构造函数抛出vector.emplace或vector.emplace\u时会发生什么?_C++_Oop_C++11_Stl - Fatal编程技术网

C++ 当构造函数抛出vector.emplace或vector.emplace\u时会发生什么?

C++ 当构造函数抛出vector.emplace或vector.emplace\u时会发生什么?,c++,oop,c++11,stl,C++,Oop,C++11,Stl,我有一个类,它在构造时可能引发异常。 我需要这个类的许多对象,我正在用emplace_返回的向量来构造它们。如果构造函数抛出会发生什么?看起来这取决于调用的构造函数 根据本标准第23.3.7.5节,如果自定义构造函数抛出以下内容,则调用emplace_back应无效: template void emplace_back(Args&&…Args); [……] 如果不是由复制构造函数引发异常,请移动 T或的构造函数、赋值运算符或移动赋值运算符 任何输入计算器操作都不会产生任何效果 你能告诉我哪里

我有一个类,它在构造时可能引发异常。
我需要这个类的许多对象,我正在用emplace_返回的向量来构造它们。如果构造函数抛出会发生什么?

看起来这取决于调用的构造函数

根据本标准第23.3.7.5节,如果自定义构造函数抛出以下内容,则调用
emplace_back
应无效:

template void emplace_back(Args&&…Args);
[……]

如果不是由复制构造函数引发异常,请移动 T或的构造函数、赋值运算符或移动赋值运算符 任何输入计算器操作都不会产生任何效果


你能告诉我哪里可以买到C++11标准吗?看起来非常有用的是免费提供的C++11工作草案,它非常接近官方的C++11标准。这里的“无效果”是什么意思?在我的程序中,一个普通构造函数在由
无序映射.emplace
构造时抛出一个异常(我想它的指定方式类似于
向量.emplace\u back
?),它会使程序崩溃,但没有显示抛出的异常。这是指定的行为吗?我猜“无效果”意味着如果捕获异常并处理它,容器不应该因为整个过程而改变。(如果您的异常被捕获并处理后仍导致程序崩溃,这可能是另一个问题?)
template <class... Args> void emplace_back(Args&&... args);