exception-safety

    5热度

    2回答

    我有一些需要线程安全和异常安全的代码。下面的代码是我的问题的一个非常简化的版本: #include <mutex> #include <thread> std::mutex mutex; int n=0; class Counter{ public: Counter(){ std::lock_guard<std::mutex>guard(mutex);

    1热度

    1回答

    我遇到这个术语异常安全的容器。我想了解究竟什么是异常安全的意思? 对于不同的容器是否有任何比较?

    11热度

    3回答

    只是为了澄清,使用make_unique只会在表达式中有多个分配时添加异常安全性,而不仅仅是一个,是否正确?例如 void f(T*); f(new T); 是完全异常安全(据分配和东西),而 void f(T*, T*); f(new T, new T); 是不是,对不对?

    3热度

    2回答

    在17 exceptional c++项目,我觉得这一点: 首先,对于所有容器,多元素插入(“迭代范围” 插入)永远不会强烈异常安全。 但在1 effective STL项目,我觉得这一点: 如果你需要多元素插入事务语义 (例如,区间形式 - 见第5条),你会想以选择列表 ,因为列表是唯一标准容器,它为多元素插入提供事务性的 语义。 和249的the c++ standard library 2t

    -1热度

    1回答

    我张贴的事件与此代码: QEvent*event=new QEvent(QEvent::User); QCoreApplication::postEvent(pointerToSomeQObject,event); QCoreApplication ::事件后描述here。但是,如果在postEvent中引发异常,绝对没有关于我应该做什么的信息。 我想功能属于这一四类之一: 如果它抛出它永远

    0热度

    2回答

    有几个特殊功能,通常保证不丢excpetions,如: 析构函数 swap方法 考虑以下swap实施,如this answer中所述: friend void swap(dumb_array& first, dumb_array& second) { using std::swap; swap(first.mSize, second.mSize); swap(fi

    1热度

    1回答

    背景 我写一个networkprotocol驱动器和具有功能write(std::shared_ptr<package> package),其中package是std::array<buffer_ptr,2>(0 =>头,1 =>体)。为了方便,我想编写一个函数write(buffer_ptr body),它自动生成头并调用write的第一种形式。要做到这一点,我想我们std::make_shar

    9热度

    2回答

    我有一个函数可以处理作为接收器参数传入的大量数据。我BigData类型已经是C++ 11感知,并配有功能齐全的移动构造函数和移动分配的实现,这样我就可以脱身,而无需复制该死的东西: Result processBigData(BigData); [...] BigData b = retrieveData(); Result r = processBigData(std::move(b)

    1热度

    3回答

    当我声明condition_variable时,它可能会抛出std::system_error。 但是当我声明POD类型时(如int,double或float)怎么样? 像下面的代码: int main() { //do something int i; //will here throw exception? } 如果声明一个POD类型可能会抛出异常,我怎么保证 vo

    1热度

    1回答

    我徘徊在C++规范(cplusplus.com),发现没有什么讲述例外安全性的std :: unordered_map 所以基本上如果我写 map["foo"]=5; 和抛出异常是因为我内存不足或bad_alloc,我可以对我的地图假设什么? 它保持有效状态? (基本保证) 保持不变? (强力担保) 它处于无效状态? (无担保)