C++11 introduced std::function as a versatile tool that was lifted from boost to the STL.
C++23 will probably introduce std::move_only_function as the first major extension.
But it comes with some caveats that you should know.
With std::invoke introduced in C++17 it has become convenient to build your own derivatives.