[英]C++ safe bool wrapper
我正在嘗試設計一個應用安全bool習語的bool包裝器結構。 解決這個問題的經典實現非常簡單:骨架可能是這樣的: 我試圖改進的部分是如何構建Bool 。 例如,我想通過設計避免隱式縮小: 我試圖用模板傷害自己,但沒有成功。 我怎么能讓它工作? ...
[英]C++ safe bool wrapper
我正在嘗試設計一個應用安全bool習語的bool包裝器結構。 解決這個問題的經典實現非常簡單:骨架可能是這樣的: 我試圖改進的部分是如何構建Bool 。 例如,我想通過設計避免隱式縮小: 我試圖用模板傷害自己,但沒有成功。 我怎么能讓它工作? ...
[英]Protected member access error in template specialization
錯誤信息: 我想知道為什么在模板特化中不能訪問受保護的成員。 這些代碼毫無意義,僅用於測試。 ...
[英]Safe bool multiple conversions ambiguity
為了支持沒有explicit關鍵字的編譯器(例如MSVC 2012),我必須實現安全的布爾習慣用法。 對於bool應該可檢查的類正在對指向許多類的指針進行建模,因此應將其轉換為這些指針。 以下代碼說明了這種想法: 如果我們使用基於explicit operator bool()的ex ...
[英]Safe bool idiom in boost?
boost庫是否提供了安全bool習語的實現,以便我可以從中派生我的類? 如果是的話 - 在哪里? 如果不是 - 除了自己實施之外我有什么其他選擇? 我發現了以下類似的問題:“ 在boost中是否有安全的bool成語助手? ”並且接受的答案建議在Boost.Operators ...
[英]Was boost::bool_testable<> relocated or removed?
我正在嘗試利用boost::bool_testable<> (來自Boost.Operators)來為一個類實現安全的布爾習慣用法,但是該庫的最新版本(截至本文發布時為1.49)似乎沒有它了。 去哪了 現在是否有更好的替代方法可供使用,而我只是錯過了? 我無法使用C + ...
[英]Incompatibilities between safe bool idiom and explicit operator bool
我正在考慮用已經使用C ++ 11特性的代碼中的explicit operator bool替換所有安全bool習語的實例(因此老編譯器不識別顯式轉換運算符的事實並不重要),所以我想想知道它是否會引起一些微妙的問題。 因此,從舊的和沉悶的安全bool成語切換到新的閃亮的explicit o ...
[英]How does the safe bool idiom bool_type (and the safe bool idiom) work?
我指着“安全布爾成語”,並試圖破譯后是怎么回事(說明該網站上提供的是不足夠的,足以給予我的,為什么它的工作原理的理解),我決定嘗試采取以下代碼並盡量簡化它。 該網站提供的代碼如下: 我決定分析 'bool_type' 的關鍵基礎,因為這似乎是它的中心。 鑒於以下行: 可以(不太容易,由於括號 ...
[英]How does “contextual conversion” with `&&` and `||` operators work in conjunction with user-defined operator overloads?
來自@ Xeo的優秀c++-faq問題: 在C ++ 11中,安全布爾的成語是否過時了? 我了解到不再需要安全的bool習慣用法,因為在C ++ 03中需要安全bool的上下文中將自動調用explicit用戶定義的bool轉換。 但是,能夠重載運算符,如&& , || ...
[英]const-correctness and the safe bool idiom
我有另一個與安全布爾成語有關的問題: 為什么bool_type (typedef)和this_type_does_not_support_comparisons是const ? 無論如何,沒有人應該通過返回指針實際調用成員 function,對吧? 這里需要const嗎? 否則operator bo ...
[英]Are there cases where a typedef is absolutely necessary?
請考慮安全bool習語的以下摘錄: 是否可以在沒有typedef的情況下聲明轉換函數? 以下內容無法編譯: ...
[英]Is the safe-bool idiom obsolete in C++11?
@R的這個答案。 Martinho Fernandes表明,安全布爾成語在 C++11 中明顯被棄用,因為它可以用一個簡單的替換 根據答案§4 [conv] p3中的標准報價: 當且僅當聲明T t=e;時,表達式 e 可以隱式轉換為類型T ; 對於某些發明的臨時變量t (§8.5),格式良好。 ...
[英]C++ safe boolean idiom cannot compile with Visual C++ 10(2010)
嗨,大家好,我從本頁的C ++安全布爾成語類派生了我的類: 比約恩·卡爾森(Bjorn Karlsson)的《安全布爾成語》 當我嘗試在如下的if表達式中使用它時 我收到錯誤C2451:類型為'Element'的條件表達式非法 。 如果我嘗試像下面這樣將其轉換為布爾值,則會出現 ...
[英]Weird compiler error and template inheritance
有人可以解釋一下為什么這段代碼: 產生以下編譯器錯誤? 由於safe_bool模板都來自safe_bool_base ,我不明白為什么人們無法訪問基類的受保護成員。 我錯過了什么嗎? ...