eAEquate ACompare<_ElementType, _ExtraDataType>::compare(
  const _ElementType & lhs,
  const _ElementType & rhs
  )
  {
  if (m_function_p)
    {
    return (m_function_p)(lhs, rhs, &m_extra_data);
    }

  // Compare memory address by default
  ptrdiff_t result = &lhs - &rhs;

  return A_INT_AS_EQUATE(result);
  }
eAEquate ACompareMethod<_OwnerType, _ElementType>::compare(
  const _ElementType & lhs,
  const _ElementType & rhs
  )
  {
  if ((m_owner_p) && (m_method_p))
    {
    return (m_owner_p->*m_method_p)(lhs, rhs);
    }

  // Compare memory address by default
  ptrdiff_t result = &lhs - &rhs;

  return A_INT_AS_EQUATE(result);
  }