Namespaces
Variants

std::seed_seq:: seed_seq

From cppreference.net
seed_seq ( ) noexcept ;
(1) (desde C++11)
seed_seq ( const seed_seq & ) = delete ;
(2) (desde C++11)
template < class InputIt >
seed_seq ( InputIt begin, InputIt end ) ;
(3) (desde C++11)
template < class T >
seed_seq ( std:: initializer_list < T > il ) ;
(4) (desde C++11)
1) El constructor por defecto. Después de la construcción, v está vacío.
2) El constructor de copia está eliminado: std::seed_seq no es copiable.
3) Construye un std::seed_seq con los valores en el rango [ begin , end ) . Equivale a inicializar por defecto v  seguido por for ( InputIt s = begin ; s ! = end ; ++ s )
v  . push_back ( modseed ( * s ) ) ;
, donde mod_seed(x)=x mod 2 32
.
Si std:: iterator_traits < InputIt > :: value_type no es un tipo entero, el programa está mal formado.
Si InputIt no cumple con los requisitos de LegacyInputIterator , el comportamiento es indefinido.
4) Equivalente a seed_seq ( il. begin ( ) , il. end ( ) ) . Este constructor permite la inicialización por lista a partir de la lista de valores de inicialización.
Esta sobrecarga participa en la resolución de sobrecarga solo si T es un tipo entero.

Parámetros

begin, end - el par de iteradores que denota la secuencia semilla inicial
il - la secuencia semilla inicial

Ejemplo

#include <iterator>
#include <random>
#include <sstream>
int main()
{
    std::seed_seq s1; // construible por defecto
    std::seed_seq s2{1, 2, 3}; // puede usar inicialización de lista
    std::seed_seq s3 = {-1, 0, 1}; // otra forma de inicialización de lista
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::seed_seq s4(a, a + 10); // puede usar iteradores
    std::istringstream buf("1 2 3 4 5"); 
    std::istream_iterator<int> beg(buf), end;
    std::seed_seq s5(beg, end); // incluso iteradores de entrada de flujo
}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2180 C++11 todos los constructores eran no lanzadores solo la sobrecarga ( 1 ) es no lanzadora
LWG 3422 C++11 1. la sobrecarga ( 1 ) no era noexcept
2. la sobrecarga ( 4 ) no estaba restringida
1. hecha noexcept
2. restringida