Hey, chciałem się zapytać jak w C++ jest zaimplementowana klasa std::sort, która jako trzeci argument przyjmuje obiekt klasy Compare a w rzeczywistości może przyjmować dowolny obiekt z przeładowanym operatorem() (funktorem)?
Rozumiałbym, gdyby to był wskaźnik na funkcję, ale to jest jakaś klasa - więc dlaczego kompilator się nie wkurza, że podajemy obiekt innej klasy?
Jak taką funkcję (mówię o std::sort) samemu zaimplementować?
Domyślam się, że jeden z konstruktorów przyjmuje jako argument wskaźnik do funkcji typu:
class Compare {
Compare(bool(*wsk)(int,int));
}
ale to przecież nie przejdzie dla funktorów, które są przecież metodami klas i wymagają podania informacji o klasie... Więc zastanawiam się jak to jest zrobione?
Z góry dzięki za rozjaśnienie sprawy ;-)