CFIXCC_ASSERT_NOT_EQUALS allows typesafe comparison of values. Failed comparisons are treated as a failure, i.e. in the same manner as a failed CFIX_ASSERT. The benefit over using CFIX_ASSERT( Expected != Actual ) is that the expected and actual value will be visible in the failure report.
void CFIXCC_ASSERT_NOT_EQUALS( __in T Expected, __in T Actual );
T can be any type, but the types of both values must be compatible. See discussion below.
The way the comparison is conducted depends on the type of the two values.
- Primitive integer objects are compared using the builtin != operator.
- Pointers are checked for address inequality. An exception to this are C strings (char*, const char*, wchar_t*, const wchar_t*). Such strings will be wrapped by std::string and std::wstring objects respectively, and operator!= of std::string or std::wstring will be invoked. That is, a value-comparison is conducted.
- For non-primitive, non-pointer types, i.e. objects of a custom class, operator!= of the respective class is invoked.