Maison > Article > développement back-end > Pourquoi ne puis-je pas comparer les objets `std::function` pour l'égalité ?
std::function encapsule des objets appelables arbitraires, présentant un défi unique pour la comparaison d'égalité. La mise en œuvre de telles comparaisons nécessiterait une comparabilité égale pour tous les types appelables, ce qui imposerait une charge importante aux responsables de la mise en œuvre. De plus, des fonctionnalités égales pourraient donner lieu à des comparaisons non égales basées sur des ordres de liaison d’arguments différents. Par conséquent, la tâche impossible de garantir l'équivalence dans tous les cas interdit la comparabilité des égalités.
Le « trou possible dans le système de types » mentionné dans le projet C 11 fait probablement référence à l'ambiguïté inhérente aux conversions implicites. La suppression des opérateurs d'égalité et l'imposition d'une utilisation explicite garantissent l'absence de code valide généré à partir de leur invocation.
Contrairement à std::function, std::shared_ptr possède une sémantique d'égalité clairement définie. Deux pointeurs sont égaux précisément lorsqu’ils sont tous deux vides ou qu’ils font tous deux référence au même objet. Ce comportement bien défini permet des comparaisons d'égalité simples et significatives.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!