Класс is_pod
Если тип СТРУЧОК тесты.
template<class Ty>
struct is_pod;
Параметры
- Ty
Тип в запрос.
Заметки
is_pod<Ty>::valuetrue, если тип Ty самый старый данные (POD). В противном случае это false.
Арифметические типы, типы перечисления, типы указателей и типы указателей на члены СТРУЧОК.
Резюме- квалифицированная версия самого типа POD тип POD.
Массив сам POD СТРУЧОК.
Структура или объединение, сама всех элементов данных, которая не статических СТРУЧОК СТРУЧОК, если они содержат:,
Нет пользователем, объявленных конструкторов.
Нет закрытым или защищенным, статические члены данных.
Нет базовых классов.
Без виртуальных функций.
Нет не статических членов данных ссылочного типа.
Нет определяемого пользователем оператора назначения копий.
Нет определенного пользователем деструктора.
Поэтому можно рекурсивно структуры и массивы POD построения, содержащие структуры и массивы POD.
Пример
// std_tr1__type_traits__is_pod.cpp
// compile with: /EHsc
#include <type_traits>
#include <iostream>
struct trivial
{
int val;
};
struct throws
{
throws() throw(int)
{
}
throws(const throws&) throw(int)
{
}
throws& operator=(const throws&) throw(int)
{
}
int val;
};
int main()
{
std::cout << "is_pod<trivial> == " << std::boolalpha
<< std::is_pod<trivial>::value << std::endl;
std::cout << "is_pod<int> == " << std::boolalpha
<< std::is_pod<int>::value << std::endl;
std::cout << "is_pod<throws> == " << std::boolalpha
<< std::is_pod<throws>::value << std::endl;
return (0);
}
Требования
Заголовок: <type_traits>
Пространство имен: std