safe-bool-idiom

    7熱度

    2回答

    我正在考慮在已經使用C++ 11功能的代碼中將安全布爾成語的所有實例替換爲explicit operator bool(因此舊版編譯器無法識別顯式轉換操作員無所謂),所以我想知道它是否會導致一些微妙的問題。 因此,什麼是所有可以通過從陳舊,失去光澤安全布爾成語切換到新的和有光澤explicit operator bool將可能造成的不兼容問題(哪怕是最微小的)? 編輯:我知道,無論如何,切換是一個

    1熱度

    2回答

    嗨,我已經衍生從C++安全布爾成語類我的類從這個頁面:The Safe Bool Idiom by Bjorn Karlsson class Element : public safe_bool<> { public: bool Exists() const; // boolean_test() is a safe_bool method bool boolean

    0熱度

    1回答

    我被指出'安全布爾成語',並試圖破譯發生了什麼(解釋supplied on the site是不夠的,不足以讓我瞭解爲什麼它的工作原理),我決定嘗試採取以下將代碼分開並嘗試儘可能簡化它。下面的網站提供的代碼: class Testable { bool ok_; typedef void (Testable::*bool_type)() const; void thi

    5熱度

    3回答

    有人能解釋我爲什麼這個代碼: class safe_bool_base { //13 protected: typedef void (safe_bool_base::*bool_type)() const; void this_type_does_not_support_comparisons() const {} //18 safe_boo

    2熱度

    1回答

    我試圖利用boost::bool_testable<>(來自Boost.Operators)來實現一個類的安全布爾成語,但最新版本的庫(本文後1.49)似乎沒有了。 它去了哪裏?現在有沒有更好的選擇,我錯過了? 我無法使用C++ 11,因此無法使用不需要渲染安全布爾的語言擴展。

    160熱度

    2回答

    This answer of @R. Martinho Fernandes所示,該安全-布爾成語apperently棄用C++ 11,因爲它可以通過一個簡單的 explicit operator bool() const; 根據在應答§4 [conv] p3標準報價替換: 當且僅當聲明T t=e;格式良好時,對於某些發明的臨時變量t(第8.5節),表達式e可隱式轉換爲類型T。某些語言結構要求將

    36熱度

    8回答

    考慮從safe bool idiom以下摘錄: typedef void (Testable::*bool_type)() const; operator bool_type() const; 是否有可能宣佈轉換功能,而不typedef的?以下不編譯: operator (void (Testable::*)() const)() const;

    0熱度

    2回答

    爲了支持沒有explicit關鍵字的編譯器(例如MSVC 2012),我必須實現安全的bool慣用法。應該對bool進行檢查的類正在建模一個指向許多類的指針,因此它應該可以轉換爲這些指針。下面的代碼描述了一個思路:如果我們使用基於explicit operator bool()執行一切正常 // Uncomment this line to change implementation to 'sa

    9熱度

    2回答

    我還有一個問題涉及到安全布爾成語: typedef void (Testable::*bool_type)() const; // const necessary? void this_type_does_not_support_comparisons() const {} // const necessary? operator bool_type() const { r