https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80093
--- Comment #2 from trashyankes at wp dot pl --- ``` #include <random> int foo (std::mt19937* x) { std::uniform_int_distribution<int> k(0, 99); for (auto i = 0; i < 1'000'000'000; ++i) { std::uniform_int_distribution<int> y(0, 99); volatile auto r = k(*x, k.param()); //change any of `k` to `y` simplify code } } ``` This `operator()` do not use any members fields of `k` directly, therefore `y` should give exactly same results but it isn't. This function depends on `k` even if do not need to do this.