POD (Plain Old Data) тип в C++ — это классификация типов данных, объединяющая характеристики тривиально копируемых (trivially copyable) и тривиально конструируемых/деструктируемых (trivially default constructible) типов. По сути, это типы, поведение которых при копировании и перемещении аналогично C-структурам: можно копировать побитово.
До C++11 понятие POD было менее формализованным и касалось в основном простых структур и встроенных типов. В C++11 и последующих стандартах определение стало строже:
Тип является POD, если он одновременно:
Тривиально копируемый (Trivially Copyable):
Тривиально по умолчанию конструируемый (Trivially Default Constructible):
Примеры POD-типов:
int, float, char, bool и т.д.c
Преимущества работы с POD-типами:
memcpy, memset).c
Проверить, является ли тип POD, можно с помощью трейтов типов в <type_traits>:
c
В современном C++ более точные характеристики тривиальностью и стандартным расположением (standard layout) чаще используются напрямую, но понимание концепции POD все еще важно. Тип является POD, если он одновременно тривиально копируемый и имеет стандартное расположение (хотя для тривиально конструируемых POD типов это тоже справедливо).