Warum enthält der C++ - Standard keine Vergleichsoperatoren, um intelligente Zeiger (unique_ptr, shared_ptr, ...) mit regulären Zeigern (T *) zu vergleichen?Kein Standard Weg, Smart Pointer mit regulären Zeiger zu vergleichen?
Tom
Update ich nicht herausfinden, bin auf der Suche, wie es gemacht werden kann. Die Frage ist, warum ist es nicht als Teil des C++ Standards definiert? Für unique_ptr und shared_ptr wären solche Definitionen trivial.
Ein Anwendungsfall dafür ist der folgende: Klasse A verfügt über eine Zuordnung mit eindeutigen Schlüssel. unique_ptr wird für die Speicherverwaltung verwendet. Wenn ein Benutzer der Klasse A einen regulären Zeiger übergeben hat, wird in dieser Map eine Suche durchgeführt. Leider definiert der Standard die Vergleichsoperatoren nicht.
Intelligente Zeiger sind nicht dasselbe wie rohe Zeiger. Warum Äpfel mit Birnen vergleichen? –
@TonyTheLion um herauszufinden, welches ist lecker, duh.(Hinweis: Wenn es ein wirklich guter Apfel ist, dann schraube Birnen) :) – jalf
Übrigens, auch wenn diese Vergleiche möglich wären, würde das Ihren speziellen Anwendungsfall, der durch die 'std :: map begrenzt ist, noch nicht lösen 's Schnittstelle und nicht nur durch die für den Schlüsseltyp im Allgemeinen erlaubten Vergleiche. Zu Ihrer Information: Das gleiche Problem (die Suche nach einem 'std :: map' mit einem rohen Zeiger) wurde erst vor kurzem hier angezeigt. –