The Polygon Concept describes the requirements for a polygon type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.
A polygon is A polygon is a planar surface defined by one exterior boundary and zero or more interior boundaries. (opengeospatial).
So the definition of a Boost.Geometry polygon differs a bit from e.g. Wiki, where a polygon does not have holes. A polygon of Boost.Geometry is a polygon with or without holes. (A polygon without holes is a helper geometry within Boost.Geometry, and referred to as a ring.)
The Polygon Concept is defined as following:
traits::ring_typedefining the type of its exterior ring and interior rings as type
ring_typemust fulfill the Ring Concept
traits::interior_typedefining the type of the collection of its interior rings as type; this collection itself must fulfill a Boost.Range Random Access Range Concept
traits::exterior_ringwith two functions named
get, returning the exterior ring, one being const, the other being non const
traits::interior_ringswith two functions named
get, returning the interior rings, one being const, the other being non const