2020#include < boost/geometry/strategies/distance.hpp>
2121#include < boost/geometry/util/select_most_precise.hpp>
2222#include < boost/geometry/util/sequence.hpp>
23+ #include < boost/geometry/util/type_traits.hpp>
2324
2425
2526namespace boost { namespace geometry
2627{
2728
2829namespace resolve_strategy
2930{
30-
31- template <typename Geometry1, typename Geometry2, typename Strategy>
31+
32+ template
33+ <
34+ typename Geometry1, typename Geometry2, typename Strategy,
35+ bool AreGeometries = (util::is_geometry<Geometry1>::value
36+ && util::is_geometry<Geometry2>::value)
37+ >
3238struct comparable_distance_result
3339 : strategy::distance::services::return_type
3440 <
@@ -41,8 +47,8 @@ struct comparable_distance_result
4147 >
4248{};
4349
44- template <typename Geometry1, typename Geometry2>
45- struct comparable_distance_result <Geometry1, Geometry2, default_strategy>
50+ template <typename Geometry1, typename Geometry2, bool AreGeometries >
51+ struct comparable_distance_result <Geometry1, Geometry2, default_strategy, AreGeometries >
4652 : comparable_distance_result
4753 <
4854 Geometry1,
@@ -54,6 +60,21 @@ struct comparable_distance_result<Geometry1, Geometry2, default_strategy>
5460 >
5561{};
5662
63+ // Workaround for VS2015
64+ #if (_MSC_VER < 1910)
65+ template <typename Geometry1, typename Geometry2, typename Strategy>
66+ struct comparable_distance_result <Geometry1, Geometry2, Strategy, false >
67+ {
68+ typedef int type;
69+ };
70+ template <typename Geometry1, typename Geometry2>
71+ struct comparable_distance_result <Geometry1, Geometry2, default_strategy, false >
72+ {
73+ typedef int type;
74+ };
75+ #endif
76+
77+
5778} // namespace resolve_strategy
5879
5980
0 commit comments