6 Stimmen

Warum definiert unary_function nicht operator()?

Ich war gerade auf der Suche nach einer handlichen Basisklasse für eine Reihe von Funktoren, die auf der Annahme und int basieren und void zurückgeben.

Bei der Verwendung von std/functional werden die Funktoren im Wesentlichen wie folgt aussehen unary_function<int,void> avec operator() .

Warum ist virtual result_type operator()(const argument_type& _Left) const = 0; nicht in der unary_function-Vorlage definiert? Ich vermute, dass es daran liegt, dass es Variationen in der Konstante geben könnte...
Gibt es eine andere Vorlage, die ich übersehen habe und die die operator() ?

Ich habe das schon eine Weile nicht mehr gemacht, habe ich etwas verpasst?

Wie würde ich auch die vorhandenen Funktionen nutzen wie

std::ptr_fun< HWND, void >(someFunction);
std::pointer_to_unary_function<HWND, void>(someFunction);

EDIT: Vielleicht sollte ich der Vollständigkeit halber auch die andere Hälfte der Verwendung mit aufnehmen. Vielleicht ist es die Hälfte der Verwendung, die nicht in das Konzept passt.

Wie würde man den Funktor an eine Methode übergeben und verwenden?

typedef unary_function<int,void> Functor;

void DoStuff(const Functor& functor) {
  int demo = 1;
  functor(demo);
}

functor als unary_function definiert operator() nicht und daher lässt sich DoStuff nicht kompilieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X