std::function は任意の呼び出し可能オブジェクトをカプセル化するため、等価比較に独特の課題が生じます。このような比較を実装するには、すべての呼び出し可能な型の等価比較が必要となり、実装者に多大な負担を強いることになります。さらに、機能が等しい場合でも、引数のバインディング順序の違いに基づいて、等しくない比較が生じる可能性があります。したがって、すべてのケースで等価性を保証するという不可能なタスクは、等価性の比較を禁止します。
C 11 ドラフトで言及されている「型システムの潜在的な穴」は、暗黙的な変換に固有のあいまいさを指している可能性があります。等価演算子を削除し、明示的な使用を強制することで、それらの呼び出しから生成される有効なコードが存在しないことが保証されます。
std::function とは異なり、std::shared_ptr は明確に定義された等価セマンティクスを備えています。 2 つのポインターが両方とも空である場合、または両方が同じオブジェクトを参照している場合、正確に等しくなります。この明確に定義された動作により、簡単で意味のある等価比較が可能になります。
以上が`std::function` オブジェクトが等しいかどうかを比較できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。