This function compares two boxes.
A default implementation is registered that compares the types (Box::IsSameType ) and if equal, with arrays compares the array's length, nulled state and finally the contents using memcmp
.
For nonarray types, it compares the relevant bytes in the placeholder. The number of leading relevant bytes is available with method Box::GetPlaceholderUsageLength .
Typespecific implementations are given and registered for fundamental types. Integrals of different sizes and floating point values will be compared by using Box::UnboxSignedIntegral , Box::UnboxUnsignedIntegral and Box::UnboxFloatingPoint and appropriate casting. In the case of floating point comparison, an epsilon distance is duly taken into account.
For custom types, with ComparableTypes, a templated implementation is suggested: Rather than implementing a specific boxfunction, the custom type should implement operator==
and register an instantiation of the templated function.
Definition at line 124 of file functions.inl.
Public Type Index:  
using  Signature = bool (*) ( const Box& self, const Box& rhs) 
Public Static Method Index:  
template<typename TComparable >  
static bool  ComparableTypes (const Box &self, const Box &rhs) 
Signature of the invokable function.
self  The box that the function was invoked on. 
rhs  The box to compare. 
Definition at line 133 of file functions.inl.

static 
Templated implementation of the function signature, usable with boxable types which have operator==
implemented.
false
is returned, if both are nulled, true.TComparable  The mapped type that can be compared using operator== . 
self  The box that the function was invoked on. 
rhs  The boxed value to compare. 
true
if self equals rhs , false
otherwise.