You simply provide functor, object that has operator() and is used while comparing objects.
As far as I know, sort accepts functors, functions and lambda expressions to use them to compare objects.
In method 3 you doesn't provide functor, function or lambda expression to compare so it's by default sorted using standard operator<. Obviously it doesn't sort your Person objects by age, as you would like to. In my opinion the cleanest form is method 4, using lambda expression.