```cpp #include <random> struct I { using iterator_category = std::input_iterator_tag; using value_type = double; using difference_type = std::ptrdiff_t; using pointer = double*; using reference = double&; reference operator*() const; pointer operator->() const; I& operator++(); I operator++(int); bool operator==(const I&) const; }; void operator,(auto, I) = delete; int main() { std::piecewise_linear_distribution<double> dist(I{}, I{}, I{}); } ``` https://godbolt.org/z/655T36eh5