std::is_pod
, вероятно, будет устаревшим в С++ 20.
Какая причина этого выбора? Что я должен использовать вместо std::is_pod
, чтобы узнать, действительно ли тип POD?
Почему std:: is_pod устарел в С++ 20?
Ответ 1
POD заменяется двумя категориями, которые дают больше нюансов. На стандартном совещании c++ в ноябре 2017 года было сказано следующее:
Устаревшее понятие "простые старые данные" (POD). Его заменили еще две нюансированные категории типов: "тривиальные" и "стандартные макеты". "POD" эквивалентен "тривиальной и стандартной компоновке", но для многих шаблонов кода целесообразно использовать более узкое ограничение на "тривиальную" или просто "стандартную компоновку"; чтобы поощрять такую точность, понятие "POD" поэтому устарело. Черта библиотеки is_pod также устарела соответственно.
Для простых типов данных используйте функцию is_standard_layout
, для тривиальных типов данных (таких как простые структуры) используйте функцию is_trivial
.