Правильное написание:
auto greet = std::mem_fn<wchar_t(wchar_t) const, std::ctype<wchar_t>>(
&std::ctype<wchar_t>::toupper);
или на самом деле вам не нужны оба параметра шаблона, только первый:
auto greet = std::mem_fn<wchar_t(wchar_t) const>(&std::ctype<wchar_t>::toupper);
Важная часть, которую вы пропустили: const
: это const
функция-член, и вам нужен полный тип.
Но вам лучше написать лямбду:
auto greet = [](std::ctype<wchar_t> const& ct, wchar_t c) {
return ct.toupper(c);
};