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