c++ - boost rtree code won't compile --- why? -


i using boost 1.61

compiling vs2015

the following code won't compile. should --- think use of adapter boost_geometry_register_point_2d_get_set upsetting things.

any idea why doesn't work or how fix it?

#include <boost/geometry/geometry.hpp> #include <boost/geometry/index/rtree.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/point.hpp> #include <boost/geometry/io/wkt/wkt.hpp> #include <vector> #include <boost/geometry/geometries/register/point.hpp>  class wxpoint { public:     wxpoint(double x, double y)         : m_x(x),           m_y(y)     {     }      wxpoint() {}      double  getx() const     {         return m_x;     }     double gety() const     {         return m_y;     }     void setx(double in)     {         m_x = in;     }     void sety(double in)     {         m_y = in;     } private:     double m_x;     double m_y; };  boost_geometry_register_point_2d_get_set(     wxpoint,     double,     boost::geometry::cs::geographic<boost::geometry::degree>,     wxpoint::getx,     wxpoint::gety,     wxpoint::setx,     wxpoint::sety)   typedef std::pair<wxpoint, unsigned> value;   int main() {      boost::geometry::index::rtree< value, boost::geometry::index::quadratic<16> > rtree;      wxpoint p(4, 1);      rtree.insert(std::make_pair(p, 1));      std::vector<value> result_s;      typedef boost::geometry::model::polygon<wxpoint> polygon_type;      polygon_type poly;     boost::geometry::read_wkt(         "polygon((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"         "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);      rtree.query(boost::geometry::index::within(poly), std::back_inserter(result_s));      return 0; } 

here summary information vc compiler:

severity code description project file line suppression state error c2672 'boost::geometry::strategy::intersection::relate_cartesian_segments>>,boost::geometry::policies::relate::segments_direction>,calculationtype>::apply': no matching overloaded function found scratch1 c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp 230 error c2782 'boost::tuples::tuple>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments>>,boost::geometry::policies::relate::segments_direction>,calculationtype>::apply(const segment1 &,const segment2 &,const robustpolicy &,const robustpoint &,const robustpoint &,const robustpoint &,const robustpoint &)': template parameter 'robustpoint' ambiguous scratch1 c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp 230 error c2784 'boost::tuples::tuple>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments>>,boost::geometry::policies::relate::segments_direction>,calculationtype>::apply(const segment1 &,const segment2 &,const robustpolicy &,const robustpoint &,const robustpoint &,const robustpoint &,const robustpoint &)': not deduce template argument 'const robustpoint &' 'const boost::geometry::model::point>' scratch1 c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp 230 error c2780 'boost::tuples::tuple>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments>>,boost::geometry::policies::relate::segments_direction>,calculationtype>::apply(const segment1 &,const segment2 &,const robustpolicy &)': expects 3 arguments - 7 provided scratch1 c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp 230

and here more detailed compiler output

this caused bug, more info here: https://svn.boost.org/trac/boost/ticket/12189 , here: https://svn.boost.org/trac/boost/ticket/12342

there several possible workarounds:

  • pass polygon using bg::model::point
  • pass box instead of polygon
  • apply fix mentioned on bug tracker page (above) local copy of boost 1.61
  • upgrade boost 1.62

Comments