What does the c++11 range for loops do that cause this:
c++11
std::list item; .... //fill the list somewhere else .... for(Point p : item) {
In your former code, the line
for(Point p : item) {
creates copies of the point every time you access the next item. To make sure that your calling of method lowerY() works, you need to redefine it as
for(Point & p : item) {