std::is_object (3) - Linux Manuals

std::is_object: std::is_object


std::is_object - std::is_object


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

If T is an object_type (that is any possibly cv-qualified type other than function, reference, or void types), 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_object_v = is_object<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is an object 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>

Possible implementation

  template< class T>
  struct is_object : std::integral_constant<bool,
                       std::is_scalar<T>::value ||
                       std::is_array<T>::value ||
                       std::is_union<T>::value ||
                       std::is_class<T>::value> {};


// Run this code

  #include <iostream>
  #include <type_traits>

  int main() {
      class cls {};
      std::cout << std::boolalpha;
      std::cout << std::is_object<int>::value << '\n';
      std::cout << std::is_object<int&>::value << '\n';
      std::cout << std::is_object<cls>::value << '\n';
      std::cout << std::is_object<cls&>::value << '\n';



See also

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

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

is_union checks if a type is an union type
          (class template)

is_class checks if a type is a non-union class type
          (class template)