Почему убрали ::std::is_pod?

Почему в С++20 задепрекейтили ::std::is_pod? Как теперь узнать, что тип является POD?


Ответы (2 шт):

Автор решения: marginal

POD is being replaced with two categories that give more nuances. The c++ standard meeting in november 2017 had this to say about it:

Deprecating the notion of “plain old data” (POD). It has been replaced with two more nuanced categories of types, “trivial” and “standard-layout”. “POD” is equivalent to “trivial and standard layout”, but for many code patterns, a narrower restriction to just “trivial” or just “standard layout” is appropriate; to encourage such precision, the notion of “POD” was therefore deprecated. The library trait is_pod has also been deprecated correspondingly.

For simple data types use the is_standard_layout function, for trivial data types (such as simple structs) use the is_trivial function.

→ Ссылка
Автор решения: haker

POD заменяется двумя категориями, которые дают больше нюансов. На [стандартном собрании c ++ в ноябре 2017 г.] 1 об этом говорилось следующее:

Отказ от понятия «старые простые данные» (POD). Он был заменен на две более тонкие категории типов: «тривиальный» и «стандартный макет». «POD» эквивалентен «тривиальному и стандартному макету», но для многих шаблонов кода уместно более узкое ограничение до «тривиального» или просто «стандартного макета»; Поэтому для поощрения такой точности понятие «POD» было объявлено устаревшим. Библиотечный трейт is_pod также устарел.

Для простых типов данных используйте функцию [ʻis_standard_layout] [2], для тривиальных типов данных (таких как простые структуры) используйте функцию [ʻis_trivial] 3.

→ Ссылка