Namespaces
Variants

std::seed_seq:: seed_seq

From cppreference.net
seed_seq ( ) noexcept ;
(1) (depuis C++11)
seed_seq ( const seed_seq & ) = delete ;
(2) (depuis C++11)
template < class InputIt >
seed_seq ( InputIt begin, InputIt end ) ;
(3) (depuis C++11)
template < class T >
seed_seq ( std:: initializer_list < T > il ) ;
(4) (depuis C++11)
1) Le constructeur par défaut. Après construction, v est vide.
2) Le constructeur de copie est supprimé : std::seed_seq n'est pas copiable.
3) Construit un std::seed_seq avec les valeurs dans l'intervalle [ begin , end ) . Équivalent à une initialisation par défaut de v  suivie de for ( InputIt s = begin ; s ! = end ; ++ s )
v  . push_back ( modseed ( * s ) ) ;
, où mod_seed(x)=x mod 2 32
.
Si std:: iterator_traits < InputIt > :: value_type n'est pas un type entier, le programme est mal formé.
Si InputIt ne satisfait pas aux exigences de LegacyInputIterator , le comportement est indéfini.
4) Équivalent à seed_seq ( il. begin ( ) , il. end ( ) ) . Ce constructeur permet l' initialisation par liste à partir de la liste des valeurs de seed.
Cette surcharge participe à la résolution de surcharge uniquement si T est un type entier.

Paramètres

begin, end - la paire d'itérateurs dénotant la séquence de départ initiale
il - la séquence de départ initiale

Exemple

#include <iterator>
#include <random>
#include <sstream>
int main()
{
    std::seed_seq s1; // constructible par défaut
    std::seed_seq s2{1, 2, 3}; // peut utiliser l'initialisation de liste
    std::seed_seq s3 = {-1, 0, 1}; // une autre forme d'initialisation de liste
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::seed_seq s4(a, a + 10); // peut utiliser des itérateurs
    std::istringstream buf("1 2 3 4 5"); 
    std::istream_iterator<int> beg(buf), end;
    std::seed_seq s5(beg, end); // même les itérateurs d'entrée de flux
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2180 C++11 tous les constructeurs étaient non-lanceurs seule la surcharge ( 1 ) est non-lanceuse
LWG 3422 C++11 1. la surcharge ( 1 ) n'était pas noexcept
2. la surcharge ( 4 ) n'était pas contrainte
1.rendue noexcept
2. contrainte