cost 166 ms
為什么 C++20 允許默認比較即使被刪除也可以編譯?

[英]Why C++20 allows defaulted comparison to compile even when it is deleted?

考慮以下代碼: clang 給出了一個很好的警告: 警告:顯式默認的相等比較運算符被隱式刪除 [-Wdefaulted-function-deleted] bool operator == (const B& other) const = default; 但我想知道為什么這個代碼甚至被 ...

為什么基類中的復制和交換會導致派生類中的復制賦值運算符被隱式刪除?

[英]Why does copy-and-swap in a base class cause the copy-assignment operator to be implicitly deleted in the derived class?

僅在GCC和Clang 中測試,基類中存在按值傳遞的復制賦值運算符(在實現復制和交換(或復制和移動)習慣用法時很有用)導致復制賦值運算符在派生類被隱式刪除。 Clang 和 GCC 同意這一點; 為什么會這樣? 示例代碼: ...

C ++ 11刪除/默認的構造函數

[英]C++11 deleted/defaulted constructors

我對在C ++ 11和C ++ 17中如何/為什么調用構造函數感到困惑。 所以當我取消注釋某些行的組合(並使用帶有clang的c ++ 17標准標志進行編譯)時,我會感到困惑: 1,編譯。 列出A和A1 init,以及A2的默認復制構造函數 2,編譯。 A和列表in ...

有效創建C ++ 11移動和復制感知結構

[英]Efficiently creating C++11 move and copy aware structs

我試圖將可以利用高效std :: move / copy構造/和賦值操作的高效C ++ 1x結構放在一起。 這些結構分為2個基本類別,即POD結構和非POD結構。 我已經養成了使用樣板代碼編寫這些結構的習慣,但是我很確定編譯器在此方面的工作比我可以做的更好,並且每個類的鍵入都很多。 我的問 ...

使用默認關鍵字時的 Visual Studio C2580

[英]Visual Studio C2580 when using default keyword

對於以下代碼: 我收到一條錯誤消息: 錯誤 C2580“S::S(void)”:不允許使用多個版本的默認特殊成員函數 我不明白。 我認為該錯誤是由模板化構造函數引起的(通過將其注釋掉並編譯程序來驗證這一點)。 ...

=默認忽略訪問說明符?

[英]=default ignores access specifier?

我發現很奇怪,盡管默認構造函數是private (4.8.1 g ++),但下面的程序仍然編譯得很好: 實際上從標准的8.4.2 [2](N3242) 顯式默認函數只有在被隱式聲明為constexpr時才可以聲明為constexpr。 如果在第一次聲明中明確違約, ...

用戶定義的默認構造函數效率較低嗎?

[英]Are user-defined default constructors less efficient?

幾天前,在閱讀標准C ++新聞時,我讀過有關C ++ 11中默認函數的帖子,在那篇文章中提到用戶定義的構造函數效率低於編譯器生成的函數: 用戶定義的默認構造函數的效率低於編譯器隱式定義的默認構造函數。 繼續閱讀,有一個例子,用戶定義的構造函數被標記為默認值,然后說: ...

我可以在類體中默認私有構造函數嗎?

[英]Can I default a private constructor in the class body or not?

GCC 4.5不允許我這樣做: 它抱怨說: 錯誤:使用非公共訪問聲明的'foo :: foo(const foo&)'不能在類體中默認 錯誤:聲明為非公共訪問的'foo&foo :: operator =(const foo&)'不能在類體中默認 但是,GCC 4. ...

如果不知道其參數類型,如何默認一個特殊成員 function?

[英]How can one default a special member function if one doesn't know its parameter types?

考慮這種情況: 我顯式聲明了一個移動構造函數,所以如果我想要一個未刪除的復制構造函數,我需要顯式聲明一個復制構造函數。 如果我想default它,我怎樣才能找到正確的參數類型? 我也對您是否遇到過在實際程序中實際出現這種情況的情況感興趣。 規范說明確默認的 function 應... 具有相同聲明 ...

為什么要“默認”復制/移動構造函數或析構函數?

[英]Why would you “default” a copy/move constructor or a destructor?

C ++ 0x允許您將某些函數指定為默認值: 這些函數的實現與編譯器生成它們的情況相同,這種情況通常在您未聲明自己的情況下在大多數情況下發生。 如果您聲明任何ctor(上述任何其他ctor),則不會生成默認ctor,因此您可能需要將其默認為“將其恢復”。 但是,除非基類或數據 ...

C ++ 11中默認函數的重點是什么?

[英]What's the point in defaulting functions in C++11?

C ++ 11增加了告訴編譯器創建任何特殊成員函數 的默認實現的能力。 雖然我可以看到刪除函數的價值,但顯式默認函數的值是什么? 只需將其留空,編譯器無論如何都會這樣做。 我能看到的唯一一點是,只有當沒有其他構造函數存在時才會創建默認構造函數: 但這真的比你現在這樣做好嗎? ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM