template struct invoke_result; template struct is_invocable; template concept invocable = is_invocable<_Fn, _Args...>::value; template requires invocable<_Fn, _Is> using indirect_result_t = typename invoke_result<_Fn, _Is>::type; template struct remove_cv; template struct projected { using value_type = remove_cv>; };