std::sort - implementacja funkcji z parametrem Compare (?)

0

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 ;-)

2

To jest szablon. Przyjmie wszystko, co można wywołać jako f(l,r), gdzie l i r są typu zwracanego przez operator* iteratora. Aha, typ zwracany przez f musi być konwertowalny do bool.

0

O raju, rzeczywiście. Już kapuję ;-).
Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1