Mam duży problem z bardzo prostą pętlą mianowicie:
while (left < numbers.size() - 1 && numbers[++left] < numbers[pivot]);
chodzi o to że gdy left jest równe -1 to nie ważne jaka wartość zostanie podana w numbers.size() - 1 pętla zakończy się na tym wyrażeniu. Testowo ustawiłem żeby left miało wartość -1 a numbers.size() - 1 = 4 a mimo to pętla zostaje zakończona. Gdy left = 0 to pętla działa jak powinna. Próbowałem także zapisu:
while ((left < numbers.size() - 1) && numbers[++left] < numbers[pivot]);
ale wynik jest taki sam