std::not1
нужен объект функции в качестве аргумента. Этот функциональный объект может быть получен с помощью std::ptr_fun
, поэтому это должно работать:
auto num_of_files=std::count_if(begin, end,
std::not1(std::ptr_fun((bool(*)(const boost::filesystem::path&))boost::filesystem::is_directory)));
(количество скобок, вероятно, неверно). Кстати, вам нужен приведение, потому что is_directory
- перегруженная функция.
Тем не менее, поскольку вы помечаете свой вопрос c ++ 11, вы можете использовать лямбда-выражения:
auto num_of_files=std::count_if(begin, end, [](const boost::filesystem::path& p) { return !boost::filesystem::is_directory(p); });