template <class _Pr>
requires constructible_from<decay_t<_Pr>, _Pr>
_NODISCARD constexpr auto operator()(_Pr&& _Pred) const
noexcept(is_nothrow_constructible_v<decay_t<_Pr>, _Pr>) {
return _Range_closure<_Filter_fn, decay_t<_Pr>>{_STD forward<_Pr>(_Pred)};
}
так может вам надо код поправить, чтобы и то и то вызывать как pointer(someargs...)? Смысл делать функтор, если его использование отличается от функции?
На 100% не уверен, но, кажется, для указателя на фукнцию можно писать pointer(someargs...), а можно *pointer(someargs...) и разницы не будет. То есть и для указателя на функтор и для указателя на фукнцию можно написать один вариант: *pointer(someargs...) и не важно, функтор это или функция.