タグ付けされた質問 「safe-bool-idiom」

2
safe-boolイディオムはC ++ 11で廃止されましたか?
@Rのこの答え。Martinho Fernandesは、セーフブールイディオムは単純にC ++ 11で置き換えられるため、C ++ 11では廃止されることを示しています。 explicit operator bool() const; 答えの標準的な見積もりによると§4 [conv] p3: 式eは、いくつかの発明された一時変数(§8.5)Tの宣言T t=e;が整形式である場合に限り、暗黙的に型に変換できますt。特定の言語構成では、式をブール値に変換する必要があります。そのeようなコンテキストに現れる式は、いくつかの発明された一時変数t(§8.5)について、宣言が整形式である場合に限り、文脈変換されbool、整形式bool t(e);であると言われます。 強調表示された部分は、「暗黙の明示的キャスト」(標準では「コンテキスト変換」と呼ばれます)を@Rとして明確に示しています。マルティーニョが言った。 「暗黙の明示的キャスト」を必要とする「特定の言語構成体」は、次のように見えます。 if、while、for(§6.4 [stmt.select] p4) 二項論理演算子&&と||(§5.14 [expr.log.and/or] p1両方) 論理否定演算子!(§5.3.1 [expr.unary.op] p9) 条件演算子?:(§5.14 [expr.cond] p1) static_assert(§7 [dcl.dcl] p4) noexcept(§15.4 [except.spec] p2) タイトルの仮定は正しいですか?潜在的な欠点を見落としていないことを願っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.