From e15cbf41a4bdf1034bd3f8d98fd00ec95b1d60ee Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Thu, 29 May 2014 14:53:51 +0300 Subject: [PATCH] [strategies] make default_strategy class commutative with respect to the order of the geometry tags --- .../cartesian/distance_projected_point.hpp | 14 ++++++++++++++ .../cartesian/distance_pythagoras_point_box.hpp | 12 ++++++++++++ .../spherical/distance_cross_track.hpp | 16 ++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp b/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp index 25179ba21..5bcad4fee 100644 --- a/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp +++ b/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp @@ -251,6 +251,20 @@ struct default_strategy > type; }; +template +struct default_strategy + < + segment_tag, point_tag, PointOfSegment, Point, + cartesian_tag, cartesian_tag, Strategy + > +{ + typedef typename default_strategy + < + point_tag, segment_tag, Point, PointOfSegment, + cartesian_tag, cartesian_tag, Strategy + >::type type; +}; + } // namespace services #endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS diff --git a/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp b/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp index 6b05ff014..af55415f8 100644 --- a/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp +++ b/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp @@ -322,6 +322,18 @@ struct default_strategy typedef pythagoras_point_box<> type; }; +template +struct default_strategy + < + box_tag, point_tag, Box, Point, cartesian_tag, cartesian_tag + > +{ + typedef typename default_strategy + < + point_tag, box_tag, Point, Box, cartesian_tag, cartesian_tag + >::type type; +}; + } // namespace services #endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS diff --git a/include/boost/geometry/strategies/spherical/distance_cross_track.hpp b/include/boost/geometry/strategies/spherical/distance_cross_track.hpp index 87fac4811..6ffa4ff7c 100644 --- a/include/boost/geometry/strategies/spherical/distance_cross_track.hpp +++ b/include/boost/geometry/strategies/spherical/distance_cross_track.hpp @@ -306,6 +306,22 @@ struct default_strategy }; +template +struct default_strategy + < + segment_tag, point_tag, PointOfSegment, Point, + spherical_equatorial_tag, spherical_equatorial_tag, + Strategy + > +{ + typedef typename default_strategy + < + point_tag, segment_tag, Point, PointOfSegment, + spherical_equatorial_tag, spherical_equatorial_tag, + Strategy + >::type type; +}; + } // namespace services #endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS