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,我可以對我的地圖假設什麼? 它保持有效狀態? (基本保證) 保持不變? (強力擔保) 它處於無效狀態? (無擔保)