私は安全なboolイディオムのすべてのインスタンスを、すでにC++ 11の機能を使用しているコードでexplicit operator bool
に置き換えることを考えています(古いコンパイラが明示的変換演算子は問題ではありません)ので、微妙な問題が発生する可能性があるかどうかを知りたいと思います。安全なboolイディオムと明示的な演算子boolとの間の互換性がありません
したがって、新しい、ピカピカexplicit operator bool
に古いと鈍い安全なブールイディオムからの切り替えが原因で発生することができすべて可能性の非互換性(も、最も微細なもの)は何ですか?
EDIT:後者はコンパイラがよく理解している言語機能であるため、実際にはちょうどハックよりも悪くはありません。私は単に可能性のある違いを知りたいだけです。
もちろん、あなたは正しいです。しかし、私はこれを '言語弁護士 'とタグ付けした理由があります。私は良い事実に関するアドバイスではなく、標準自体から続く純粋な事実をご希望します。とにかく、それを明らかにするが、ありがとう。 – Fanael
@Fanael:スタンダード、C++ 03とC++ 11の両方は、セーフ・ブールのイディオムについて話していないので、私が言ったことをサポートするためにそれを引用することはできません。私が暗示していることは、C++ 11が理由のために '明示的な演算子bool'を導入したことです。その理由の1つは'明示的な演算子bool'がいわゆる安全なブールのイディオム。 – Nawaz
しかし、標準では、セーフ・ブールのイディオムを実装するために使用されたことについて話しています。標準ではそのイディオムそのものについては言及していませんが、その正確な保証はドキュメントによってかなり暗示されています。 – Fanael