std::is_pod (3) - Linux Manuals

std::is_pod: std::is_pod


std::is_pod - std::is_pod


Defined in header <type_traits>
template< class T > (since C++11)
struct is_pod; (deprecated in C++20)

If T is a PODType ("plain old data type"), that is, both trivial and standard-layout, provides the member constant value equal true. For any other type, value is false.
The behavior is undefined if std::remove_all_extents_t<T> is an incomplete type and not (possibly cv-qualified) void.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_pod_v = is_pod<T>::value; (deprecated in C++20)

Inherited from std::integral_constant

Member constants

value true if T is a POD type , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

Type Definition
value_type bool
type std::integral_constant<bool, value>


Objects of POD types are fully compatible with the C programming language.


// Run this code

  #include <iostream>
  #include <type_traits>

  struct A {
      int m;

  struct B {
      int m1;
      int m2;

  struct C {
      virtual void foo();

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_pod<A>::value << '\n';
      std::cout << std::is_pod<B>::value << '\n';
      std::cout << std::is_pod<C>::value << '\n';



See also

is_standard_layout checks if a type is a standard-layout type
                   (class template)

is_trivial checks if a type is trivial
                   (class template)