web-dev-qa-db-ja.com

C ++ 20でstd :: is_podが推奨されないのはなぜですか?

std::is_podはおそらくC++ 20で非推奨になります。
この選択の理由は何ですか?タイプが実際にPODであるかどうかを知るには、std::is_podの代わりに何を使用すればよいですか?

64
skypjack

PODは、より多くのニュアンスを与える2つのカテゴリに置き換えられています。 2017年11月のC++標準会議 には、このことについて次のように書かれていました。

「プレーンな古いデータ」(POD)の概念の廃止。これは、「トリビアル」および「スタンダードレイアウト」という2つのより微妙なタイプのカテゴリに置き換えられました。 「POD」は「単純で標準的なレイアウト」と同等ですが、多くのコードパターンでは、「単純」または「標準レイアウト」へのより狭い制限が適切です。したがって、このような精度を促進するために、「POD」の概念は廃止されました。ライブラリ特性is_podも同様に廃止されました。

単純なデータ型には is_standard_layout 関数を使用し、単純なデータ型(単純な構造体など)には is_trivial 関数を使用します。

48
D.J. Klomp