noexcept

    6熱度

    1回答

    C++ 14標準定義瞭如下的std::map查找()成員功能: iterator find(const key_type& x); const_iterator find(const key_type& x) const; 爲什麼這些功能沒有被定義爲noexcept?那裏面可能會出現什麼問題,這需要拋出一個異常或產生未定義的行爲(除了找不到元素,在這種情況下函數返回一個迭代器並且不需要異常拋

    3熱度

    2回答

    我正在處理使用錯誤代碼的項目,並且不允許執行異常處理(我們正在使用new運算符的nothrowing版本)。 是否有意義使用說明符每個函數? 哪些是可能的贊成和反對?

    0熱度

    2回答

    關於此功能 int test(int a,int b) { return a/b; } 如果我打電話test(2,1),什麼都不會發生。 但是,如果我打電話test(2,0),它會導致未定義的行爲。 因此,我應該將其定義爲noexcept? 順便說一句,爲什麼std :: vector :: operator []不是noexcept?

    3熱度

    2回答

    我是C++的初學者,我正在學習一些C++ 11的功能。我注意到的一件事是,在Visual C++ stdlib的某些部分,作者使用_NOEXCEPT宏而不是noexcept關鍵字。懸停在宏說#define _NOEXCEPT noexcept,所以我有點困惑,它的重點是什麼。兩者之間有什麼區別,我應該更喜歡哪一個? 編輯:我只是尋找它在GitHub上,它看起來像clang使用它一樣,所以它不是一個

    18熱度

    4回答

    在C++ 11及更高版本中,如何確定抽象基類的構造函數是否爲noexcept?下面的方法不起作用: #include <new> #include <type_traits> #include <utility> struct Base { Base() noexcept; virtual int f() = 0; }; // static assertion fails, becau

    4熱度

    1回答

    Here我發現: 繼承構造[...]都是noexcept(真)默認情況下,除非他們需要調用一個函數是noexcept(假),在這種情況下,這些功能noexcept(假)。 這是否意味着在下面的例子中,繼承的構造是noexcept(true),儘管它在基類中被明確定義爲noexcept(false),或者被認爲是本身作爲一個函數,noexcept(假)被稱爲? struct Base {

    1熱度

    3回答

    當我聲明condition_variable時,它可能會拋出std::system_error。 但是當我聲明POD類型時(如int,double或float)怎麼樣? 像下面的代碼: int main() { //do something int i; //will here throw exception? } 如果聲明一個POD類型可能會拋出異常,我怎麼保證 vo

    4熱度

    3回答

    好的,如果我使用RAII語言來管理某些上下文屬性*,如果我在try區塊的開始處裸露地使用它,它是否會像我預期的那樣工作? 換句話說,如果我有這樣的: struct raii { raii() { std::cout << "Scope init" << std::endl; } ~raii() { std::cout << "Scope

    0熱度

    1回答

    我正在寫一個應該非常高效的迭代器,我想知道我是否可以聲明運算符operator->()和operator*()爲noexcept,因爲它們只會調用基礎指針上的相同運算符(但如果指針指向非可用內存部分,那麼程序很可能會崩潰)?

    10熱度

    3回答

    我無法理解在C++ 11/14中關鍵字noexcept的用途&的用途。我的意思是這些功能不會發出exceptions的簽名。但它真的有用嗎? 請看下面這段代碼: #include <iostream> #include <bits/stdc++.h> using namespace std; void seev (vector<int> &v) noexcept; void seev (v