http://en.cppreference.com/w/cpp/utility/functional/function
operator bool
が記載されている: "保存された呼び出し可能オブジェクトが有効であるかどうかをチェックします"。
おそらくデフォルトの構成std::function
は無効ですが、これは唯一のケースですか?
また、どのように有効かどうかを確認しますか?
operator()
は、対象が有効でない場合と全く同じ場合がありますか?std::bad_function_call
*これは、そうでない場合はfalse目標を持っている場合はtrue:
OKなので、正当性チェックはタイプチェックにすぎず、 'std :: function'のデフォルトの呼び出しはまさに' std :: bad_function_call'が発生した場合です。 – dpj
@ user710408:「妥当性のチェックはタイプチェックにすぎません」という意味は分かりません。コンパイル時にタイプ・チェックが実行されるとき、有効性(今では定義が "ターゲットを持っている"と仮定します)が実行時に決定されます。関数が有効でない(ターゲットを持たない)か、デフォルトの構造か、明示的に 'nullptr 'が割り当てられているかどうかにかかわらず、不正な関数呼び出しが発生します。 – GManNickG
私はどちらかの意味を知っているとは思わない!ありがとう:) – dpj