//std::sort(this->_sortedEntities.begin(), this->_sortedEntities.end(), this->compareYAxisPosition);
this->_sortedEntities.sort(this->compareYAxisPosition);
Your commented-out code is (more) correct. Your uncommented code is not how sorting works in the C++ STL. The sort algorithm is not built-in to each container; it's a reusable stand-alone facility.
http://en.cppreference.com/w/cpp/algorithm/sortThat said, using a std::list is a terrible idea, prefer std::vector in almost every circumstance. I'd also recommend storing pointers to the entities rather than their string keys so that you can more efficiently sort by the Y attribute.
Lastly, the code you provided won't work as a comparator:
this->compareYAxisPosition
The comparator has to be a function that can be called. You can't call a member function without an object to call it on, though, and adding the this-> in there doesn't automatically bind the function pointer to the object like C# does. You will need to explicitly bind the member function to an object or use a lambda:
sort(begin(sorted), end(sorted), [this](std::string const& lhs, std::string const& rhs){ return this->compareYAxisPosition(lhs, rhs); });
Though again, you should just use Entity* in your sorted list, and then you don't even need a member function (since you have direct access to the Entity and don't need to look up through another container) and can just put your comparison logic right inside of the lambda:
sort(begin(sorted), end(sorted), [this](Entity const* lhs, Entity const* rhs){ return lhs->position.y < rhs->position.y; });