123    template <
typename _Xp, 
typename _Yp>
 
  124    bool operator()(_Xp &&__x, _Yp &&__y)
 const 
  126        if constexpr (both_types_are_same<
 
  127                          dpnp_remove_cvref_t<_Xp>, dpnp_remove_cvref_t<_Yp>,
 
  128                          std::complex<float>, std::complex<double>>)
 
  131            _Xp a = std::forward<_Xp>(__x);
 
  132            _Yp b = std::forward<_Yp>(__y);
 
  134            if (a.real() < b.real()) {
 
  135                ret = (a.imag() == a.imag() || b.imag() != b.imag());
 
  137            else if (a.real() > b.real()) {
 
  138                ret = (b.imag() != b.imag() && a.imag() == a.imag());
 
  140            else if (a.real() == b.real() ||
 
  141                     (a.real() != a.real() && b.real() != b.real())) {
 
  142                ret = (a.imag() < b.imag() ||
 
  143                       (b.imag() != b.imag() && a.imag() == a.imag()));
 
  146                ret = (b.real() != b.real());
 
  151            return std::forward<_Xp>(__x) < std::forward<_Yp>(__y);