//! Constructs an iterator pointing to the all-0 assignment for the domain.
 explicit uint_assignment_iterator(const domain<Arg>& args)
   : args_(args), done_(false) {
   for (Arg arg : args) {
     std::size_t n = argument_traits<Arg>::num_dimensions(arg);
     a_.emplace(arg, uint_vector(n, 0));
   }
 }
 uint_vector operator()(Generator& rng) const {
   return operator()(rng, uint_vector());
 }