std::is_compound (3) - Linux Manuals

std::is_compound: std::is_compound


std::is_compound - std::is_compound


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

If T is a compound type (that is, array, function, object pointer, function pointer, member object pointer, member function pointer, reference, class, union, or enumeration, including any cv-qualified variants), provides the member constant value equal true. For any other type, value is false.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_compound_v = is_compound<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is a compound 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>


Compound types are the types that are constructed from fundamental types. Any C++ type is either fundamental or compound.

Possible implementation

  template< class T >
  struct is_compound : std::integral_constant<bool, !std::is_fundamental<T>::value> {};


// Run this code

  #include <iostream>
  #include <type_traits>

  int main() {
      class cls {};
      std::cout << (std::is_compound<cls>::value
                       ? "T is compound"
                       : "T is not a compound") << '\n';
      std::cout << (std::is_compound<int>::value
                       ? "T is compound"
                       : "T is not a compound") << '\n';


  T is compound
  T is not a compound

See also

is_fundamental checks if a type is a fundamental type
               (class template)

is_scalar checks if a type is a scalar type
               (class template)

is_object checks if a type is an object type
               (class template)

is_array checks if a type is an array type
               (class template)