Я столкнулся с этим вопросом ptr_fun в одном из C++-кода, я пробовал читать его с cplusplus.com, но я честно не могу понять, что должен делать этот указатель функции.Я не понимаю ptr_fun
Код интереса очень прост, обрезает пустые части с начала строки.
static inline string & trim_beg(string & s) {
s.erase(s.begin(), find_if(s.begin(), s.end(), not1(ptr_fun < int, int > (isspace))));
return s;
}
http://en.cppreference.com/w/cpp/utility/functional/ptr_fun – Maxqueue
Вам не нужно указывать аргументы шаблона, '' ptr_fun (:: isspace) 'должен делать. Единственная цель 'ptr_fun' - обернуть' isspace' и предоставить член 'typedef'' argument_type', который требуется ['unary_negate'] (http://en.cppreference.com/w/cpp/utility/functional/unary_negate) (вещь, которую 'not1' возвращает). Таким образом, вызов 'find_if' будет возвращать итератор в первый элемент, для которого'! Isspace' истинно. – Praetorian