Como a função comparadora abaixo funciona em c ++?

bool comp(int a,int b){

    if ((a > 0 && b > 0) || (a < 0 && b < 0))
        return false;

    if ((a > 0) && (b < 0))
        return false;
}

Para uma determinada matriz, que contém números inteiros positivos e negativos, a função acima é útil para reorganizar a matriz de modo que números inteiros negativos sigam números inteiros positivos e preservem a ordem dos elementos.

Exemplo:

int arr [] = {1,2,-3,-1}, n=sizeof(arr)/sizeof(int);

sort(arr,arr+n, comp);

output : {-3,-1,1,2}

Mas não consigo entender como está funcionando. Alguém poderia explicar?

questionAnswers(2)

yourAnswerToTheQuestion