Согласно моему черновому варианту n3225 C ++ 0x, WindowsApi::Uuid
- это класс POD.
со стр. 219:
Структура POD - это класс, который является одновременно тривиальным классом и классом стандартной компоновки и не имеет нестатических членов-данных типа не-POD-структуры, не-POD-объединения (или массива таких типов).
Тривиальный класс - это класс, имеющий тривиальный конструктор по умолчанию и тривиально копируемый:
Тривиально копируемый класс - это класс, который:
- не имеет нетривиальных конструкторов копирования (12.8),
- не имеет нетривиальных конструкторов перемещения (12.8),
- не имеет нетривиальных операторов присваивания копий (13.5.3, 12.8),
- не имеет нетривиальных операторов назначения перемещений (13.5.3, 12.8), а
- имеет тривиальный деструктор (12.4).
Класс стандартной компоновки - это класс, который:
- не имеет нестатических членов-данных типа нестандартного класса (или массива таких типов) или ссылки,
- не имеет виртуальных функций (10.3) и виртуальных базовых классов (10.1),
- имеет одинаковый контроль доступа (пункт 11) для всех нестатических элементов данных ,
- не имеет базовых классов нестандартной компоновки,
- либо не имеет нестатических элементов данных в наиболее производном классе и не более одного базового класса с нестатическими элементами данных, либо не имеет базовых классов с нестатическими элементами данных, и
- не имеет базовых классов того же типа, что и первый нестатический элемент данных.
Поскольку WindowsApi
не нарушает ни одно из этих ограничений, это будет действительный класс POD в C ++ 0x. Как отмечает AndreyT, это более щедрая формулировка, чем C ++ 03.