On Tue, Jan 25, 2022 at 02:07:43PM -0800, Ali Çehreli via Digitalmars-d-learn 
wrote:
[...]
> auto RandomChoice(R)(R[] r...)
> 
> > {
> >      auto rnd = MinstdRand0(unpredictableSeed);
> >      return only(r).randomSample(1, rnd).front;
> 
> Which makes that simpler as well because being a slice, r is already a
> range. And there is choice():
> 
>     return r.choice(rnd);
> 
> Something is very important though: The 'r' slice is short-lived; it does
> not live in dynamic memory. RandomChoice() should not save it for later use
> nor return it. (The compiler may have protection against that; I am not
> sure.)

I think with -dip1000 the compiler should refuse to compile the code if
you try to save a slice of r past the function body.


T

-- 
Philosophy: how to make a career out of daydreaming.

Reply via email to