1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef BOOST_GEOMETRY_STRATEGIES_DEFAULT_LENGTH_RESULT_HPP
- #define BOOST_GEOMETRY_STRATEGIES_DEFAULT_LENGTH_RESULT_HPP
- #include <boost/geometry/algorithms/detail/select_geometry_type.hpp>
- #include <boost/geometry/core/coordinate_type.hpp>
- #include <boost/geometry/util/select_most_precise.hpp>
- #include <boost/geometry/util/type_traits.hpp>
- namespace boost { namespace geometry
- {
- namespace resolve_strategy
- {
- }
- namespace resolve_dynamic
- {
- template <typename Sequence>
- struct default_length_result_impl;
- template <typename ...Geometries>
- struct default_length_result_impl<util::type_sequence<Geometries...>>
- {
- using type = typename select_most_precise
- <
- typename coordinate_type<Geometries>::type...,
- long double
- >::type;
- };
- template <typename Geometry>
- struct default_length_result
- : default_length_result_impl<typename detail::geometry_types<Geometry>::type>
- {};
- }
- template <typename Geometry>
- struct default_length_result
- : resolve_dynamic::default_length_result<Geometry>
- {};
- }}
- #endif
|