Objeto de função não está funcionando corretamente

Eu defini o seguinte objeto de função:

struct Predicate1
{
   __device__ bool operator () 
       (const DereferencedIteratorTuple& lhs, const DereferencedIteratorTuple& rhs) 
  {
    using thrust::get;
    //if you do <=, returns last occurence of largest element. < returns first
    if (get<0>(lhs)== get<2>(lhs) && get<0>(lhs)!= 3) return get<1>(lhs) < get<1>(rhs); 
    else
    return true ;
  }
};

onde o DereferencedIteratorTuple é o seguinte:

typedef thrust::tuple<int, float,int> DereferencedIteratorTuple;

Além disso, eu chamo da seguinte forma:

result =  thrust::max_element(iter_begin, iter_end, Predicate1());

Mas o resultado é a tupla (3, 0,99). Estou confuso porque este é o resultado porque a condiçãoget<0>(lhs)== get<2>(lhs) não segura noif para esta tupla. Assim, o operador retorna true para cada comparação dessa tupla. Contudo,thrust::max_elementé definido da seguinte forma:

"Esta versão compara objetos usando uma função objeto comp. Especificamente, esta versão de max_element retorna o primeiro iterador i em [primeiro, último) tal que, para cada iterador j em [primeiro, último], comp (* i, * j) é falso."

Portanto, não há como isso ser escolhido, pois o operador nunca retorna false. Por favor, deixe-me saber o que estou fazendo errado

questionAnswers(1)

yourAnswerToTheQuestion