From 77e4f4b472032bbff4f6ea0d40a7666a2bcf2d96 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Tue, 8 Jul 2014 12:39:36 +0300 Subject: [PATCH] [strategies][comparable distance (result)] implement variant-aware comparable distance result --- .../strategies/comparable_distance_result.hpp | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/include/boost/geometry/strategies/comparable_distance_result.hpp b/include/boost/geometry/strategies/comparable_distance_result.hpp index cfe7ea84a..117f59a2f 100644 --- a/include/boost/geometry/strategies/comparable_distance_result.hpp +++ b/include/boost/geometry/strategies/comparable_distance_result.hpp @@ -10,8 +10,10 @@ #ifndef BOOST_GEOMETRY_STRATEGIES_COMPARABLE_DISTANCE_RESULT_HPP #define BOOST_GEOMETRY_STRATEGIES_COMPARABLE_DISTANCE_RESULT_HPP -#include +#include +#include #include +#include #include @@ -19,6 +21,7 @@ namespace boost { namespace geometry { + /*! \brief Meta-function defining return type of comparable_distance function \ingroup distance @@ -30,32 +33,34 @@ template typename Strategy = void > struct comparable_distance_result -{ - typedef typename strategy::distance::services::return_type - < - typename strategy::distance::services::comparable_type - < - Strategy - >::type, - typename point_type::type, - typename point_type::type - >::type type; -}; - - -template -struct comparable_distance_result - : comparable_distance_result + : distance_result < Geometry1, Geometry2, - typename detail::distance::default_strategy + typename strategy::distance::services::comparable_type < - Geometry1, Geometry2 + Strategy >::type > {}; +template +struct comparable_distance_result + : distance_result +{}; + +template +struct comparable_distance_result + < + Geometry1, Geometry2, default_comparable_strategy + > : distance_result +{}; + +template +struct comparable_distance_result + : distance_result +{}; + }} // namespace boost::geometry