see code below:
#include <algorithm>
#include <ctype.h>
#include <cctype>
#include <string>
int main() {
std::string str = "a String";
// compile fail: template deduction fail for _Pred
// return std::any_of(str.begin(), str.end(), std::isupper);
// OK:
return std::any_of(str.begin(), str.end(), isupper); // or ::isupper
}
both std::isupper
and isupper
have same declaration according to cppreference.com:
Defined in header < cctype>
int isupper( int ch );
Defined in header <ctype.h>
int isupper( int ch );
So, why?