◐ Shell
clean mode source ↗

C + + Konzepte: FunctionObject – cppreference.com

Aus cppreference.com

Ein Typ FunctionObject ist der Typ eines Objektes, der links vom Funktionsaufrufoperator benutzt werden kann.

Anforderungen

Der Typ T erfüllt die Anforderungen von FunctionObject falls

  • für T gilt std::is_object ist wahr,
  • ein gegebenes f den Typ T oder const T hat
  • und args eine passende Argumentenlist, die auch leer sein darf, ist.

Der folgende Aussdruck muß dann gültig sein:

Ausdruck Anforderung
f(args) performs a function call

Anmerkungen

Funktionen und Referenzen auf Funktionen sind keine Funktionsobjekte, können aber überall benutzt werden, wo Funktionsobjekte erwartet werden. Dieses ist möglich durch die implizite Umwandlung von Funktionen auf Zeiger.

Standard Bibliothek

Beispiele

zeigt verschiedene Typen von Funktionsobjekten

#include <iostream>

void foo(int x) { std::cout << "foo(" << x << ")\n"; }

int main()
{
    void(*fp)(int) = foo;
    fp(1); // calls foo using the pointer to function

    struct S {
        void operator()(int x) const { std::cout << "S::operator(" << x << ")\n"; }
    } s;
    s(2); // calls s.operator()
    s.operator()(3); // the same

    auto lam = [](int x) { std::cout << "lambda(" << x << ")\n"; };
    lam(4); // calls the lambda
    lam.operator()(5); // the same
}

Output:

foo(1)
S::operator(2)
S::operator(3)
lambda(4)
lambda(5)

Referenzen

ein Typ, für den der Aufrufoperator definiert ist
(Konzept)