Proposed resolution:
In [rand.util.seedseq]/2, class seed_seq synopsis replace:
class seed_seq { public: ... template<class InputIterator, size_t u = numeric_limits<iterator_traits<InputIterator>::value_type>::digits> seed_seq(InputIterator begin, InputIterator end, size_t u = numeric_limits<typename iterator_traits<InputIterator>::value_type>::digits); ... };
and do a similar replacement in the member description between p.3 and p.4.
In [rand.util.seedseq]/2, class seed_seq synopsis and in the member description between p.3 and p.4 replace:
template<class InputIterator, size_t u = numeric_limits<iterator_traits<InputIterator>::value_type>::digits> seed_seq(InputIterator begin, InputIterator end); template<class InputIterator, size_t u> seed_seq(InputIterator begin, InputIterator end, implementation-defined s);
In [rand.synopsis], header <random> synopsis, immediately after the class seed_seq declaration and in [rand.util.seedseq]/2, immediately after the class seed_seq definition add:
template<size_t u, class InputIterator> seed_seq make_seed_seq(InputIterator begin, InputIterator end);
In [rand.util.seedseq], just before p.5 insert two paragraphs:
The first constructor behaves as if it would provide an integral constant expression u of type size_t of value numeric_limits<typename iterator_traits<InputIterator>::value_type>::digits.
The second constructor uses an implementation-defined mechanism to provide an integral constant expression u of type size_t and is called by the function make_seed_seq.
In [rand.util.seedseq], just after the last paragraph add:
template<size_t u, class InputIterator> seed_seq make_seed_seq(InputIterator begin, InputIterator end);where u is used to construct an object s of implementation-defined type.
Returns: seed_seq(begin, end, s);