template <class T>
struct is_pod : public true_type-or-false_type
{};
Наследники:Если T является (возможно, cv-квалифицированным) POD-типом, то наследуется отtrue_type, в противном случае наследуется отtrue_type.Фальшивый_тип.
POD расшифровывается как «Plain Old Data». Арифметические типы и типы перечисления, указатели и указатели для членов - все POD. Классы и союзы также могут быть POD, если у них нет нестатических членов данных, которые относятся или не относятся к типу POD, нет пользовательских конструкторов, нет операторов назначений, нет частных или защищенных нестатических членов данных, нет виртуальных функций и нет базовых классов. Наконец, cv-квалифицированный POD по-прежнему является POD, как и множество POD.
Стандартная ссылка на C++:3.9p10 и 9p4 (Обратите внимание, что POD также являются агрегатами, см. 8.5.1).
Совместимость компилятора:Без некоторой (пока еще не указанной) помощи от компилятора is_pod никогда не сообщит, что класс или структура является POD; это всегда безопасно, если возможно, неоптимально. В настоящее время (июнь 2015 года) компиляторы более поздние, чем Visual C++ 8, Clang-3, GCC-4.3, Greenhills 6.0, Intel-11.0 и Codegear имеют необходимый компиляторвнутренних элементовдля обеспечения того, чтобы эта черта «просто работала». Вы также можете проверить, доступны ли необходимыевнутренности, проверив, определен ли макрос<BOOST_IS_POD
>.
Заголовок:<#include
<boost/type_traits/is_pod.hpp>
>или<#include<boost/type_traits.hpp>
>
Примеры:
<is_pod<char*>::type
>является типом<true_type
>.
<is_pod<int(*)(long)>::value
>является интегральным постоянным выражением, которое оцениваетистинно.
<is_pod<MyClass>::value
>— интегральное постоянное выражение, оценивающее доложное.
<is_pod<T>::value_type
>является типом<bool
>.