Я пытаюсь использовать std :: partition с пользовательским UnaryPredicate.
void Rank(vector< pair<double, string> >& pairs) const
{
partition(pairs.begin(), pairs.end(), [](const pair<double, string>& a) { isnan(a.first); });
}
При этом я получаю следующие ошибки от Visual Studio 2015:
- Ошибка C2297 '&&': недопустимый, правый операнд имеет тип 'void' Imaging c: \ program files (x86) \ microsoft visual studio 14.0 \ vc \ include \ algorithm 1839
- Ошибка C2171 '!': Незаконно для операндов типа 'void' Imaging c: \ program files (x86) \ microsoft visual studio 14.0 \ vc \ include \ algorithm 1844
- Ошибка C2297 '&&': недопустимый, правый операнд имеет тип 'void 'Imaging c: \ program files (x86) \ microsoft visual studio 14.0 \ vc \ include \ algorithm 1844
Однако следующее не вызывает проблем:
bool pairIsNan(const pair<double, string>& a)
{
return isnan(a.first);
}
partition(pairs.begin(), pairs.end(), pairIsNan);
Может кто-нибудь проясняет, что не так с первым набором кода и как его решить?