Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::shuffle_fn Struct Reference

Public Member Functions

template<typename I , typename S , typename Gen = detail::default_random_engine &>
auto operator() (I const begin, S const end, Gen &&gen=detail::get_random_engine()) const -> I requires random_access_iterator< I > &&sentinel_for< S, I > &&permutable< I > &&uniform_random_bit_generator< std::remove_reference_t< Gen >> &&convertible_to< invoke_result_t< Gen & >, iter_difference_t< I >>
 
template<typename Rng , typename Gen = detail::default_random_engine &>
auto operator() (Rng &&rng, Gen &&rand=detail::get_random_engine()) const -> safe_iterator_t< Rng > requires random_access_range< Rng > &&permutable< iterator_t< Rng >> &&uniform_random_bit_generator< std::remove_reference_t< Gen >> &&convertible_to< invoke_result_t< Gen & >, iter_difference_t< iterator_t< Rng >>>