N4127 Checked-dereference conditions ポインタ操作では、以下のように「間接参照可能か(有効な値を指すポインタか)」をチェックしてから間接参照する、というのがよく行われます。 if (p) { T x = *p; } これを以下のように書けるようにしよう、というのがこの提案。 if (T x : p) { } つまり、間接参照ができるなら間接参照をして値を取り出す、までを一つのif文でやってしまおうというものです。 これは、値の判定と取り出しを同時に行う、ミニマムなパターンマッチと見なすことができます。 この機能は、多くの状況で便利に活用できます。 weak_ptrの場合 weak_ptrは、lock()メンバ関数を使用してshared_ptrオブジェクトを取り出します。その際、以下のようなコードを書くことになりますが、 if (shared_ptr<T>