Funktionsobjekt



  • hallo,

    kann mir mal jemand erklären, wie folgender Aufruf abgehandelt wird?

    struct Delete
    {
    	template<typename T>
    	void operator()(T* p)
    	{
    		delete p;
    	}
    };
    
    std::for_each(entries.begin(), entries.end(), Delete());
    

    Wieso kann man denn jetzt den Operator der Klasse Delete aufrufen, ohne einen Parameter zu übergeben?


  • Mod

    Delete() erzeugt ein (default-konstruiertes) temporäres Objekt, das ist kein Aufruf des Überladenen Operators ().
    Einfach zu erkennen: Delete ist der Name eines Typen, nicht der eines Objektes.


Anmelden zum Antworten