Перегрузка скобок оператора C ++ ()

Недавно я задал вопрос об удалении элементов из вектора. Что ж, решение, которое я получил, работает, но я его не понимаю - и я не могу найти никакой документации, объясняющей это.

struct RemoveBlockedHost {
    RemoveBlockedHost(const std::string& s): blockedHost(s) {}

    // right here, I can find no documentation on overloading the () operator
    bool operator () (HostEntry& entry) { 
        return entry.getHost() == blockedHost || entry.getHost() == "www." + blockedHost;
    }
    const std::string& blockedHost;
};

для использования в качестве:

hosts.erase(std::remove_if(hosts.begin(), hosts.end(), RemoveBlockedHost(blockedhost)), hosts.end());

Я просмотрел документацию std :: remove_if, там написано, что это можно передать класс вместо функции только тогда, когда класс перегружает оператор (). Никакой информации.

Кто-нибудь знает ссылки на: в нем говорится, что передать класс вместо функции можно только тогда, когда класс перегружает оператор (). Никакой информации.

Кто-нибудь знает ссылки на: в нем говорится, что передать класс вместо функции можно только тогда, когда класс перегружает оператор (). Никакой информации.

Кто-нибудь знает ссылки на:

    • Книга, содержащая примеры / объяснения.
      Или ссылку на онлайн-документацию / руководства.

    Помощь с этим будет признательна. Мне не нравится добавлять код в свое программное обеспечение, если я этого не понимаю. Я знаю, что это работает, и я знаком (отчасти) с перегрузкой операторов, но не знаю, для чего нужен оператор ().

    11
    задан FurryHead 31 March 2011 в 16:55
    поделиться