Возвращаемое значение истинно, что указывает на отсутствие ошибок. Например. в глубине цепочки вызовов:
template <typename RobustPolicy, typename GeometryOut, typename Strategy>
static inline bool apply(Geometry1 const& geometry1,
Geometry2 const& geometry2,
RobustPolicy const& robust_policy,
GeometryOut& geometry_out,
Strategy const& strategy)
{
typedef typename geometry::detail::output_geometry_value
<
GeometryOut
>::type SingleOut;
intersection_insert
<
Geometry1, Geometry2, SingleOut,
overlay_intersection
>::apply(geometry1, geometry2, robust_policy,
geometry::detail::output_geometry_back_inserter(geometry_out),
strategy);
return true;
}
Это в
#0 0x000055555555598c in boost::geometry::dispatch::intersection<boost::geometry::model::segment<cxy>, boost::geometry::model::segment<cxy>, boost::geometry::segment_tag, boost::geometry::segment_tag, false>::apply<boost::geometry::detail::no_rescale_policy, std::vector<cxy, std::allocator<cxy> >, boost::geometry::strategy::intersection::cartesian_segments<void> > (geometry1=..., geometry2=..., robust_policy=..., geometry_out=std::vector of length 0, capacity 0, strategy=...) at /home/sehe/custom/boost_1_73_0/boost/geometry/algorithms/detail/intersection/interface.hpp:63
#1 0x0000555555555842 in boost::geometry::resolve_strategy::intersection::apply<boost::geometry::model::segment<cxy>, boost::geometry::model::segment<cxy>, std::vector<cxy, std::allocator<cxy> > > (geometry1=..., geometry2=..., geometry_out=std::vector of length 0, capacity 0) at /home/sehe/custom/boost_1_73_0/boost/geometry/algorithms/detail/intersection/interface.hpp:175
#2 0x00005555555556ed in boost::geometry::resolve_variant::intersection<boost::geometry::model::segment<cxy>, boost::geometry::model::segment<cxy> >::apply<std::vector<cxy, std::allocator<cxy> >, boost::geometry::default_strategy> (geometry1=..., geometry2=..., geometry_out=std::vector of length 0, capacity 0, strategy=...) at /home/sehe/custom/boost_1_73_0/boost/geometry/algorithms/detail/intersection/interface.hpp:198
#3 0x00005555555554f3 in boost::geometry::intersection<boost::geometry::model::segment<cxy>, boost::geometry::model::segment<cxy>, std::vector<cxy, std::allocator<cxy> > > (geometry1=..., geometry2=..., geometry_out=std::vector of length 0, capacity 0) at /home/sehe/custom/boost_1_73_0/boost/geometry/algorithms/detail/intersection/interface.hpp:403
#4 0x0000555555554eab in main () at /home/sehe/Projects/stackoverflow/test.cpp:40
Я просмотрел спецификацию OGC Simple Feature, которая Подробнее о Boost Geoetry
Библиотека следует существующим соглашениям:
- соглашения от повышения
- соглашения из стандартных библиотек соглашений и
- имена из одного из стандартов OGC по геометрии и, более конкретно, из Спецификации простых функций OGC
Он концептуально моделирует алгоритм без возвращаемого значения:
Я проверил все реализации в algorithms/detail/intersection (areal_areal.hpp, box_box.hpp, реализация.hpp, interface.hpp, multi.hpp) и ничего не возвращает false.
TL;DR Резюме
Возвращаемое значение специально недокументировано, другими словами: это деталь реализации, от которой вы можете не зависеть.
Что касается интерфейса библиотеки, документированный интерфейс может не меняться (без предупреждения) в новых версиях. Многие вещи, которые можно "обнаружить" через заголовки, являются недокументированными — чаще всего обозначаются detail::
пространством имен и/или detail/
папками заголовков.
person
sehe
schedule
27.07.2020