Три предыдущие строчки можно заменить на
return collinear_are_ordered_along_line(*last, a, b);
Заодно сделав collinear_are_ordered_along_line шаблонной функцией)