Namespaces
Variants

std::seed_seq:: seed_seq

From cppreference.net
seed_seq ( ) noexcept ;
(1) (C++11以降)
seed_seq ( const seed_seq & ) = delete ;
(2) (C++11以降)
template < class InputIt >
seed_seq ( InputIt begin, InputIt end ) ;
(3) (C++11以降)
template < class T >
seed_seq ( std:: initializer_list < T > il ) ;
(4) (C++11以降)
1) デフォルトコンストラクタ。構築後、 v は空です。
2) コピーコンストラクタは削除されています: std::seed_seq はコピーできません。
3) std::seed_seq を範囲 [ begin , end ) 内の値で構築する。 v をデフォルト初期化した後、 for ( InputIt s = begin ; s ! = end ; ++ s )
v  . push_back ( modseed ( * s ) ) ;
を実行するのと等価である。ここで mod_seed(x)=x mod 2 32
である。
std:: iterator_traits < InputIt > :: value_type が整数型でない場合、プログラムは不適格です。
InputIt LegacyInputIterator の要件を満たさない場合、動作は未定義です。
4) 次と同等: seed_seq ( il. begin ( ) , il. end ( ) ) 。このコンストラクタはシード値のリストからの リスト初期化 を可能にします。
このオーバーロードは、 T が整数型の場合にのみ、オーバーロード解決に参加します。

パラメータ

begin, end - 初期シードシーケンスを示すイテレータのペア
il - 初期シードシーケンス

#include <iterator>
#include <random>
#include <sstream>
int main()
{
    std::seed_seq s1; // デフォルト構築可能
    std::seed_seq s2{1, 2, 3}; // リスト初期化を使用可能
    std::seed_seq s3 = {-1, 0, 1}; // 別形式のリスト初期化
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::seed_seq s4(a, a + 10); // イテレータを使用可能
    std::istringstream buf("1 2 3 4 5"); 
    std::istream_iterator<int> beg(buf), end;
    std::seed_seq s5(beg, end); // ストリーム入力イテレータも使用可能
}

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2180 C++11 全てのコンストラクタが非スロー オーバーロード ( 1 ) のみが非スロー
LWG 3422 C++11 1. オーバーロード ( 1 ) がnoexceptではなかった
2. オーバーロード ( 4 ) が制約されていなかった
1. noexcept化
2. 制約追加