@exceptionsafety No-throw guarantee: this function never throws exceptions.
@complexity Linear.
@liveexample{The example demonstrates comparing several JSON types.,operator__equal}
24061 {
24062#ifdef __GNUC__
24063#pragma GCC diagnostic push
24064#pragma GCC diagnostic ignored "-Wfloat-equal"
24065#endif
24066 const auto lhs_type = lhs.type();
24067 const auto rhs_type = rhs.type();
24068
24069 if (lhs_type == rhs_type)
24070 {
24071 switch (lhs_type)
24072 {
24074 return *lhs.m_value.array == *rhs.m_value.array;
24075
24077 return *lhs.m_value.object == *rhs.m_value.object;
24078
24080 return true;
24081
24083 return *lhs.m_value.string == *rhs.m_value.string;
24084
24086 return lhs.m_value.boolean == rhs.m_value.boolean;
24087
24089 return lhs.m_value.number_integer == rhs.m_value.number_integer;
24090
24092 return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
24093
24095 return lhs.m_value.number_float == rhs.m_value.number_float;
24096
24098 return *lhs.m_value.binary == *rhs.m_value.binary;
24099
24101 default:
24102 return false;
24103 }
24104 }
24105
24107 {
24108 return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
24109 }
24110
24112 {
24113 return lhs.m_value.number_float ==
static_cast<number_float_t>(rhs.m_value.number_integer);
24114 }
24115
24117 {
24118 return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
24119 }
24120
24122 {
24123 return lhs.m_value.number_float ==
static_cast<number_float_t>(rhs.m_value.number_unsigned);
24124 }
24125
24127 {
24128 return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
24129 }
24130
24132 {
24133 return lhs.m_value.number_integer ==
static_cast<number_integer_t>(rhs.m_value.number_unsigned);
24134 }
24135
24136 return false;
24137#ifdef __GNUC__
24138#pragma GCC diagnostic pop
24139#endif
24140 }
NumberIntegerType number_integer_t
a type for a number (integer)
NumberFloatType number_float_t
a type for a number (floating-point)
@ number_integer
number value (signed integer)
@ discarded
discarded by the parser callback function
@ binary
binary array (ordered collection of bytes)
@ object
object (unordered set of name/value pairs)
@ number_unsigned
number value (unsigned integer)
@ array
array (ordered collection of values)