enum class value_t : std::uint8_t { null, object, array, string, boolean, number_integer, number_unsigned, number_float, binary, discarded };
This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions is_null, is_object, is_array, is_string, is_boolean, is_number (with is_number_integer, is_number_unsigned, and is_number_float), is_discarded, is_binary, is_primitive, and is_structured rely on it.
There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: number_unsigned_t is used for unsigned integers, number_integer_t is used for signed integers, and number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type.