我正在考慮在已經使用C++ 11功能的代碼中將安全布爾成語的所有實例替換爲explicit operator bool
(因此舊版編譯器無法識別顯式轉換操作員無所謂),所以我想知道它是否會導致一些微妙的問題。安全布爾成語與顯式運算符之間的不兼容bool
因此,什麼是所有可以通過從陳舊,失去光澤安全布爾成語切換到新的和有光澤explicit operator bool
將可能造成的不兼容問題(哪怕是最微小的)?
編輯:我知道,無論如何,切換是一個好主意,因爲後者是一種語言特性,編譯器很好理解,所以它不會比事實上只是一個黑客更糟。我只是想知道可能的差異。
當然你是對的。但是我有一個原因,我用'language-lawyer'標記了這個。我希望標準本身遵循純粹的事實,而不是對良好實踐的建議。得澄清,但無論如何感謝。 – Fanael 2012-02-21 19:00:12
@Fanael:標準,C++ 03和C++ 11都沒有提到safe-bool習慣用法,所以不可能引用它來支持我所說的。我隱含的意思是C++ 11已經引入了「明確的操作符bool」,我認爲其中一個原因是「顯式操作符bool」比所謂的更安全**安全布爾成語。 – Nawaz 2012-02-21 19:06:35
但是標準會談到用於實現安全布爾成語的事情。所以,雖然這個標準對這個成語本身毫無用處,但它的確切保證幾乎是文檔隱含的。 – Fanael 2012-02-21 19:11:04