In function 'void first_lower(std::string&)':
no matching function for call to 'find_if(std::basic_string<char>::iterator, std::basic_string<char>::iterator, <unresolved overloaded function type>)'
note: candidate is:
note: template<class _IIter, class _Predicate> _IIter std::find_if(_IIter, _IIter, _Predicate)
find_if(_InputIterator __first, _InputIterator __last,
^
note: template argument deduction/substitution failed:
11:29: note: couldn't deduce template parameter '_Predicate'
There is no guarantee that the header <cctype> would provide its declarations and definitions within the global namespace. (It may do so, but it is not required to do so.)
To use use ::islower in a portable manner, #include <ctype.h>. This header assuredly provides its declarations and definitions within the global namespace. (It may also provide these names within the namespace std, but it is not required to do so.)