Namespaces
Variants

std::seed_seq:: seed_seq

From cppreference.net
seed_seq ( ) noexcept ;
(1) (seit C++11)
seed_seq ( const seed_seq & ) = delete ;
(2) (seit C++11)
template < class InputIt >
seed_seq ( InputIt begin, InputIt end ) ;
(3) (seit C++11)
template < class T >
seed_seq ( std:: initializer_list < T > il ) ;
(4) (seit C++11)
1) Der Standardkonstruktor. Nach der Konstruktion ist v leer.
2) Der Kopierkonstruktor ist gelöscht: std::seed_seq ist nicht kopierbar.
3) Konstruiert ein std::seed_seq mit den Werten im Bereich [ begin , end ) . Entspricht dem Standard-Initialisieren von v  gefolgt von for ( InputIt s = begin ; s ! = end ; ++ s )
v  . push_back ( modseed ( * s ) ) ;
, wobei mod_seed(x)=x mod 2 32
.
Wenn std:: iterator_traits < InputIt > :: value_type kein Ganzzahltyp ist, ist das Programm fehlerhaft.
Wenn InputIt die Anforderungen von LegacyInputIterator nicht erfüllt, ist das Verhalten undefiniert.
4) Entspricht seed_seq ( il. begin ( ) , il. end ( ) ) . Dieser Konstruktor ermöglicht Listeninitialisierung aus der Liste der Seed-Werte.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn T ein Ganzzahltyp ist.

Parameter

begin, end - das Paar von Iteratoren, das die initiale Seed-Sequenz bezeichnet
il - die initiale Seed-Sequenz

Beispiel

#include <iterator>
#include <random>
#include <sstream>
int main()
{
    std::seed_seq s1; // standardkonstruierbar
    std::seed_seq s2{1, 2, 3}; // kann Listeninitialisierung verwenden
    std::seed_seq s3 = {-1, 0, 1}; // weitere Form der Listeninitialisierung
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::seed_seq s4(a, a + 10); // kann Iteratoren verwenden
    std::istringstream buf("1 2 3 4 5"); 
    std::istream_iterator<int> beg(buf), end;
    std::seed_seq s5(beg, end); // sogar Stream-Eingabeiteratoren
}

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2180 C++11 alle Konstruktoren waren nicht-werfend nur Überladung ( 1 ) ist nicht-werfend
LWG 3422 C++11 1. Überladung ( 1 ) war nicht noexcept
2. Überladung ( 4 ) war nicht eingeschränkt
1. noexcept gemacht
2. eingeschränkt