Как работает функция min_element в stl ?
гуглил, что-то не выходит понять. Она если принимает третий параметр с двумя значениями, то этот параметр функтор, а значения ( int следующий, int текущий )  , верно???
я сделал return , но почему она не возвращает значения сразу , а только в конце? каким образом происходит сравнение? 
написал код чтобы легче было ориентироваться
this->result = std::min_element(this->array.begin(), this->array.end(), [](int next, int current) {
        int nextMod = (next < 0 ? next * (-1) : next);
        int currentMod = (current < 0 ? current * (-1) : current);
        std::cout << next << ' ' << current << " ::: nextMod < currentMod ::: " << (nextMod < currentMod) <<  endl;
        return nextMod < currentMod;
    });
