![](/img/trans.png)
[英]Program using noexcept accepted by msvc and clang but rejected by gcc
我正在使用此處列出的書籍學習 C++。 特別是,我最近使用C++ 入門一書了解了 noexcept noexcept 現在,為了進一步理清我對該主題的概念並確認我理解正確,我正在編寫簡單的程序。 下面給出了一個使用 MSVC 和 Clang 但不使用 GCC 編譯的程序。 演示。 所以我的問題是哪個 ...
[英]Program using noexcept accepted by msvc and clang but rejected by gcc
我正在使用此處列出的書籍學習 C++。 特別是,我最近使用C++ 入門一書了解了 noexcept noexcept 現在,為了進一步理清我對該主題的概念並確認我理解正確,我正在編寫簡單的程序。 下面給出了一個使用 MSVC 和 Clang 但不使用 GCC 編譯的程序。 演示。 所以我的問題是哪個 ...
[英]How do I know the exact exception type?
我們使用繼承自CAccessorBase的CDynamicAccessor 。 function MoveNext會拋出HRESULT MoveNext() throw() 但沒有說明它是什么異常類型。 我怎么知道的? ...
[英]what is a subexpression of an initialization
struct B { B() throw(); B(const B&) = default; // implicit exception specification is noexcept(true) B(B&&, int = (throw Y(), ...
[英]Are compilers allowed to support a feature, that is removed in the standard?
在第一段cppreference.com中明確指出throw(T1, ..., Tn)在 C++17 中被移除。 讓我感到困惑的是,一些編譯器在 C++17 模式下支持throw(T1, ..., Tn) (參見演示)。 MSVC 默認支持它,但您可以為其打開警告,請參閱C5040 。 它可以變 ...
[英]How to detect if a contructor is noexcept with a throwing destructor
以下代碼將無法在大多數編譯器上編譯: CppReference 還指出這在編譯器實現中很常見,但沒有提供替代方案。 如何在沒有析構函數影響結果的情況下測試構造函數是否為 noexcept? ...
[英]Was there any version of C++ (even pre-standard) were `throw()` did not mean “cannot throw, ever”?
問題是關於 C++ 的歷史:ISO 標准、修訂標准(帶 DR),甚至是標准草案; 都算作“C++”。 是否有任何 C++ 此屬性不成立: 使用空拋出規范throw()聲明的 function 不能拋出異常。 如果該屬性不成立,我想要一個反例。 注釋: 不言而喻,在function 中拋出異常,然后 ...
[英]Why was the old empty throw specification rewritten with a new syntax `noexcept`?
標題說明了一切:為什么 C++ 放棄了完全令人滿意、有用的空拋出規范throw()來用另一種語法替換它,引入新的關鍵字noexcept ? 空拋出規范是“只拋出這些枚舉異常的保證”(寫為throw(X,Y,Z) ),但枚舉異常為零:而不是拋出X 、 Y或Z (以及派生類型),您可以拋出空集:這是 ...
[英]Exception specification in ˋtypedefˋ completely forbidden or only at toplevel?
在 C++14 Sec 15.4;2 中聲明,...異常規范不應出現在 typedef 聲明或別名聲明中。 這意味着禁止以下行為: 但是,措辭不應出現是否意味着令牌noexcept不能出現在 typedef 聲明中的任何位置? 例如,這兩者是否也被禁止? 它們都試圖定義一個類型fn1和f ...
[英]c++1z dynamic exception specification error
我正在嘗試使用新的GCC版本7.2.1編譯我的項目,並且遇到動態異常規范的問題: error: ISO C++1z does not allow dynamic exception specifications MEMORY_ALLOC_OPERATORS(SQLException) ...
[英]Can main() have an exception specification?
在標准C ++中, main功能可以有一個例外說明嗎? 例如,以下法律合法嗎? ...
[英]how to throw an exception when there is no constructor in the inherited class?
我不確定這個問題是否合適,但我會盡力而為。 這是我的作業問題。 如果兩行平行或相等,作業會要求我拋出異常。 原始代碼由我的教授提供,我的工作是對其進行修改以使其能夠引發異常。 行 教授告訴我們不要修改頭文件,只能修改.cpp文件。 line.cpp 由於 ...
[英]Is there any point in declaring a deleted function as noexcept?
考慮一個類的這兩個可能的定義: 附件A: 圖表 A': 將已刪除的函數聲明為noexcept什么noexcept嗎? ...
[英]Why std::map find() is not declared as noexcept?
C ++ 14標准定義了std::map的find()成員函數,如下所示: 為什么這些函數沒有被定義為noexcept ? 內部可能出錯的地方,需要拋出一個異常或產生未定義的行為(除了沒有找到一個元素,在這種情況下函數返回一個end迭代器並且無論如何都不需要拋出異常)? ...
[英]Transitioning to C++11 where destructors are implicitly declared with noexcept
在C ++ 11中,沒有任何異常規范的析構函數使用noexcept隱式聲明,這是對C ++ 03的更改。 因此,用於從C ++ 03中的析構函數拋出的代碼仍然可以在C ++ 11中正常編譯,但是一旦嘗試從這樣的析構函數拋出就會在運行時崩潰。 由於這樣的代碼沒有編譯時錯誤,如何安全地轉換到 ...
[英]What is the exception specification for a defaulted move operation defined outside the class?
考慮這個課程: 因為C1的移動ctor在其第一個聲明中被明確默認,所以標准的8.4.2告訴我們它具有相同的異常規范(ES),就好像該函數已被隱式聲明一樣。 然后我們可以使用15.4 / 14和12.8 / 15來得出結論,它的ES是noexcept(true) 。 現在考慮一個C ...
[英]How to get a warning on old exception specifications
我知道除了其他東西(比如auto_ptr)之外,C ++ 11中已經棄用了異常規范。 有沒有辦法從g ++ 4.8獲得以下代碼的警告? 我已經嘗試過-Wall -pedantic -Wextra -Wdeprecated-declarations ,但沒有任何成功。 ...
[英]Why are C++ exception specifications not checked at compile-time?
我剛才讀到,在C ++ 11標准版本中,異常規范已被棄用。 我以前認為指定你的功能可能是好的做法,但顯然,不是這樣。 在閱讀了Herb Stutter引用得很好的文章之后 ,我不禁要問:為什么實際上是按照它們的方式實現了異常規范,為什么委員會決定棄用它們而不是在編譯時檢查它們? 為什么 ...
[英]No limits on throw exception types
我已經知道,當我指定異常時,函數可以拋出沒有其他可以被拋出,但是當我測試這個代碼時它沒有遵循這個規則。 我誤解了什么嗎? ...
[英]Typeinfo for ocl::CRException
我試圖使用g ++運行我的C ++程序,但出現以下異常: “用於ocl :: CRException的typeinfo”正在使用包含CRException類的ocl命名空間。.請幫助我。 這是包含OCL類的代碼: ...
[英]confusion about non-throw functions
我有2個關於非拋出函數的問題: 為什么要使函數不拋出異常? 如何使函數不拋出異常? 如果函數中的代碼實際上可能throw ,那么我是否仍應使其不拋出? 這是一個例子: 如果swap的代碼根本不會拋出,我還應該追加throw()嗎? 為什么? ...