Why can’t “transform(s.begin(),s.end(),s.begin(),tolower)” be complied successfully?
Let’s look at a list of options starting with the worst and moving to the best. We’ll list them here and discuss them below: transform(cbegin(s), cend(s), begin(s), ::tolower) transform(cbegin(s), cend(s), begin(s), static_cast<int(*)(int)>(tolower)) transform(cbegin(s), cend(s), begin(s), [](const unsigned char i){ return tolower(i); }) The code in your question, transform(s.begin(), s.end(), s.begin(), tolower) will produce an error … Read more