Angenommen, die folgenden zwei Funktionen:C++: Verbindung von Bindungen?
#include <iostream>
#include <cstdlib> // atoi
#include <cstring> // strcmp
#include <boost/bind.hpp>
bool match1(const char* a, const char* b) {
return (strcmp(a, b) == 0);
}
bool match2(int a, const char* b) {
return (atoi(b) == a);
}
Jede dieser Funktionen zwei Argumente, kann aber in einen aufrufbaren Objekt transformiert werden, die unter Verwendung (std/boost) bind
nur ein Argument annimmt. Etwas entlang der Linien von:
boost::bind(match1, "a test");
boost::bind(match2, 42);
ich in der Lage sein wollen, erhalten von zwei Funktionen wie diese, die ein Argument nehmen und zurück bool
, eine aufrufbare Objekt, das zwei Argumente nimmt und gibt den & & der bool
s. Der Typ der Argumente ist beliebig.
So etwas wie ein operator&&
für Funktionen, die bool
zurückgeben.
Willst du keine Funktion, die ein Argument und ein Bool zurückgibt? Dh äquivalent zu 'match1 (" ein Test ", X) && match2 (42, X)'? oder willst du wirklich 'match1 (" ein test ", X) && match2 (42, Y)'? –
Ich möchte wirklich eine Funktion, die zwei Argumente braucht. –