text: // Boost.Geometry (aka GGL, Generic Geometry Library)
  // QuickBook Example
  
  // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
  
  // Use, modification and distribution is subject to the Boost Software License,
  // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  // http://www.boost.org/LICENSE_1_0.txt)
  
  //[comparable_distance
  //` Shows how to efficiently get the closest point
  
  #include <iostream>
  
  #include <boost/geometry.hpp>
  #include <boost/geometry/geometries/point_xy.hpp>
  
  #include <boost/numeric/conversion/bounds.hpp>
  #include <boost/foreach.hpp>
  
  int main()
  {
      typedef boost::geometry::model::d2::point_xy<double> point_type;
      
      point_type p(1.4, 2.6);
      
      std::vector<point_type> v;
      for (double x = 0.0; x <= 4.0; x++)
      {
          for (double y = 0.0; y <= 4.0; y++)
          {
              v.push_back(point_type(x, y));
          }
      }
      
      point_type min_p;
      double min_d = boost::numeric::bounds<double>::highest();
      BOOST_FOREACH(point_type const& pv, v)
      {
          double d = boost::geometry::comparable_distance(p, pv);
          if (d < min_d)
          {
              min_d = d;
              min_p = pv;
          }
      }
      
      std::cout 
          << "Closest: " << boost::geometry::dsv(min_p) << std::endl
          << "At: " << boost::geometry::distance(p, min_p) << std::endl;
  
      return 0;
  }
  
  //]
  
  
  //[comparable_distance_output
  /*`
  Output:
  [pre
  Closest: (1, 3)
  At: 0.565685
  ]
  */
  //]
  
  