Heim > Artikel > Backend-Entwicklung > Warum kann ich „std::function“-Objekte nicht auf Gleichheit vergleichen?
std::function kapselt beliebige aufrufbare Objekte und stellt eine einzigartige Herausforderung für den Gleichheitsvergleich dar. Die Implementierung solcher Vergleiche würde eine gleichwertige Vergleichbarkeit für alle aufrufbaren Typen erfordern, was eine erhebliche Belastung für die Implementierer bedeuten würde. Darüber hinaus könnte eine gleiche Funktionalität zu ungleichen Vergleichen führen, die auf unterschiedlichen Argumentbindungsreihenfolgen basieren. Daher verhindert die unmögliche Aufgabe, die Gleichwertigkeit in allen Fällen zu gewährleisten, die Gleichheitsvergleichbarkeit.
Die im C 11-Entwurf erwähnte „mögliche Lücke im Typsystem“ bezieht sich wahrscheinlich auf die inhärente Mehrdeutigkeit impliziter Konvertierungen. Durch das Löschen von Gleichheitsoperatoren und das Erzwingen der expliziten Verwendung wird sichergestellt, dass bei ihrem Aufruf kein gültiger Code generiert wird.
Im Gegensatz zu std::function verfügt std::shared_ptr über eine klar definierte Gleichheitssemantik. Zwei Zeiger sind genau dann gleich, wenn beide leer sind oder sich beide auf dasselbe Objekt beziehen. Dieses klar definierte Verhalten ermöglicht einfache und aussagekräftige Gleichheitsvergleiche.
Das obige ist der detaillierte Inhalt vonWarum kann ich „std::function“-Objekte nicht auf Gleichheit vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!