44 using result_t = invoke_result_t<G &>;
45 semiregular_box_t<G> gen_;
46 detail::non_propagating_cache<result_t> val_;
62 result_t && read()
const
65 rng_->val_.emplace(rng_->gen_());
66 return static_cast<result_t &&
>(
static_cast<result_t &
>(*rng_->val_));
70 RANGES_EXPECT(0 != rng_->n_);
74 static_cast<void>(rng_->gen_());
93 std::size_t size()
const
103 template(
typename G)(
105 std::is_object<detail::decay_t<invoke_result_t<G &>>>::value AND
106 constructible_from<detail::decay_t<invoke_result_t<G &>>,
107 invoke_result_t<G &>> AND
108 assignable_from<detail::decay_t<invoke_result_t<G &>> &,
109 invoke_result_t<G &>>)