binary_function ist jetzt veraltet und wird in C++ 17 gelöscht werden. Ich habe nach verschiedenen Veröffentlichungen gesucht, aber ich konnte keine genaue Methode finden, sie zu ersetzen. Ich würde gerne wissen, wie ich den folgenden Code in C++ 11-Stil schreiben soll.Ersatz für binary_function
template <class T>
inline T absolute(const T &x) {
return (x >= 0) ? x : -x;
}
template <class T>
struct absoluteLess : public std::binary_function<T, T, bool> {
bool operator()(const T &x, const T &y) const {
return absolute(x) < absolute(y);
}
};
template <class T>
struct absoluteGreater : public std::binary_function<T, T, bool> {
bool operator()(T &x, T &y) const {
return absolute(x) > absolute(y);
}
};
EDIT: I die Funktionen in der folgenden Weise bin mit:
output[j] = *std::max_element(input.begin() + prev, input.begin() + pos, absoluteLess<float>());
Eingangs- und Ausgangsvektoren sind, im Inneren einer for-Schleife
warum Sie es brauchen?type traits und declltype können den Typ von 'operator()' ohne die Anforderungen von 'binary_function' ermitteln –
Wie benutzt man diese Template-Funktionen? Die Antwort hängt von der Verwendung ab. – Rostislav
http://stackoverflow.com/a/22863957/642626 das ist, wie Sie die Argumente und den Rückgabetyp jedes aufrufbaren Objekts herausfinden. –