binary_function è deprecato ora e verrà eliminato in C++ 17. Ho cercato su diverse pubblicazioni, ma non sono riuscito a trovare un modo esatto per sostituirlo. Mi piacerebbe sapere come dovrei scrivere il seguente codice in stile C++ 11.sostituzione per 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: Sto utilizzando le funzioni nel seguente modo:
output[j] = *std::max_element(input.begin() + prev, input.begin() + pos, absoluteLess<float>());
ingresso e uscita sono vettori, all'interno di un ciclo for
perché ne hai bisogno?type traits e decltype possono capire il tipo di 'operator()' senza le necessità di 'binary_function' –
Come si usano queste funzioni di template? La risposta dipende dall'utilizzo. – Rostislav
http://stackoverflow.com/a/22863957/642626 ecco come si trovano gli argomenti e si restituisce il tipo di qualsiasi oggetto callable. –