A polygon consists of rings. You want to have the exterior ring (outer ring). That is accessable using exterior_ring(aPolygon);
So you could use something like this code to iterate over the points of a polygon (for simplicity I use auto, otherwise declare an iterator):
for(auto it1 = boost::begin(boost::geometry::exterior_ring(poly));
it1 != boost::end(boost::geometry::exterior_ring(poly));
++it1)
{
for(auto it2 = boost::begin(boost::geometry::exterior_ring(poly));
it2 != boost::end(boost::geometry::exterior_ring(poly));
++it2)
{
// You might skip cases where it1==it2, distance is zero anyway
double distance = boost::geometry::distance(*it1, *it2);
// Compare with a max distance, if larger, assign, etc.
}
}
(loops often also loop over interior rings, but for diameter that is not necessary if the polygon is well-defined).
By the way, about your question: PointList is the name of the template-parameter (see doc). The member function is outer(), for the outer ring. The code above uses a free function "exterior_ring" to use the Polygon Concept, which should work for any polygon type within Boost.Geometry