...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Distance calculation for spherical coordinates on a perfect sphere using haversine.
template<typename RadiusType, typename CalculationType> class strategy::distance::haversine { // ... };
Parameter 
Default 
Description 

typename RadiusType 
numeric type for radius (of sphere, earth) 

typename CalculationType 
void 
numeric type for calculation (e.g. high precision); if void then it is extracted automatically from the coordinate type and (if necessary) promoted to floating point 
Function 
Description 
Parameters 

haversine(RadiusType const & radius = 1.0)

Constructor. 
RadiusType const &: radius: radius of the sphere, defaults to 1.0 for the unit sphere 
Function 
Description 
Parameters 
Returns 

template<typename Point1, typename Point2> calculation_type< Point1, Point2 >::type apply(Point1 const & p1, Point2 const & p2)

applies the distance calculation 
Point1 const &: p1: first point Point2 const &: p2: second point 
the calculated distance (including multiplying with radius) 
RadiusType radius()

access to radius value 
the radius 
#include <boost/geometry/strategies/spherical/distance_haversine.hpp>