C++11
C++03では、構造体が Plain Old Data (POD) 型として扱われるためにはいくつかのルールに従う必要がある。これを満たす型は C と互換性のあるオブジェクトレイアウトを生成する。しかし、C++03 におけるルールは必要以上に厳しく、より多くの型をPOD型にしてもよいのではないかという指摘があった。
C++11 では POD の定義に関して、いくつかのルールが緩和されている。
クラス・構造体は、それが trivial であり、standard-layout であり、すべての非静的データメンバがPOD型であるとき、POD型とみなされる。
trivial なクラス・構造体は、以下のように定義される。
デフォルトコンストラクタを持ち、かつ、非 trivial なデフォルトコンストラクタを持たない。
非 trivial なコピーコンストラクタを持たない。
非 trivial なムーブコンストラクタを持たない。
以下の機能は、主に言語を使いやすくするためのものである。例えば型安全性や、類似したコードの繰り返しを削減すること、間違ったコードが書かれにくくすることなどが含まれる。
新ライブラリには、一様分布から確率論で定義された分布まで、多種類の分布が定義されている:
離散一様分布uniform_int
ベルヌーイ分布bernoulli_distribution
幾何分布geometric_distribution
ポアソン分布poisson_distribution
二項分布binomial_distribution
連続一様分布uniform_real
指数分布exponential_distribution
正規分布normal_distribution
ガンマ分布gamma_distribution
明らかであるが、標準の分布を実体化しても構わないし、ユーザ自身の互換性のある分布を用いても構わない。
以下は、新ライブラリを用いた簡単な例である: