blob: 96b2ba302653958d3f4fd24e82a9d568b098bb58 [file] [log] [blame]
template<typename _Functor, typename _ArgTypes>
struct invoke_result;
template<typename _Fn, typename _ArgTypes>
struct is_invocable;
template<typename _Fn, typename... _Args>
concept invocable = is_invocable<_Fn, _Args...>::value;
template<typename _Fn, typename _Is>
requires invocable<_Fn, _Is>
using indirect_result_t = typename invoke_result<_Fn, _Is>::type;
template<typename _Tp>
struct remove_cv;
template<typename _Iter, typename _Proj>
struct projected
{
using value_type = remove_cv<indirect_result_t<_Proj&, _Iter>>;
};