The comparison functor passed to the constraints hierarchy has a
pointer to the `Constrained_triangulation_plus_2` that contains it.
That means the defaulted move constructor and move assignment operator of `Polyline_constraint_hierarchy_2` cannot be used to
implement the move constructor and move assignment operator of
`Constrained_triangulation_plus_2`.
Add a special constructor for `Polyline_constraint_hierarchy_2`, that is
usee to move the hierarchy and reassign the comparison operator.
- encapsulate the creation/erasure of constraints in the hierarchy class
- add encapsulation in the hierarchy class, to detect direct uses of members
- add a test of `CDt_plus_2::insert_vertex_in_constraint`, and fix it
- rename `concatenate` and `concatenate2` to
- `concatenate`
- `prepend`
and force a rvalue reference on the argument corresponding to the constraint
that will be swallowed
- rename `split` to `split_tail` and `split2` to `split_head`
- rename `fix_contexts` to give it a longer self-explaning name
Instead of storing the hierarchy as a data member, store it
as a hidden (protected) base class. That allows to forward
member functions easily with using-declarations. That also avoids
mismatches between the names in the triangulation and the hierarchy.
- refactor the member function `enclosing_constraint`
- refactor things around `sc_to_sc_map`, using new member functions
to encapsulate the logic
- remove unused/undocuments functions
- remove all mentions of `Edge` and `Constraint`
- `Subconstraint_iterator` is renamed `Subconstraint_and_contexts_iterator` (because of its value type)
- a new `Subconstraint_iterator`, with value type `Subconstraint`
- a few unused/untested and uncompilable functions are removed from the code
- a lot of internal renamings
== Breaking changes ==
For `Constrained_triangulation_plus_2`, there are a few breaking changes...
- The value type of `subconstraints_begin()`, `subconstraints_end()`, of the range `subconstraints()` has changed to `Subconstraint` (a simple `std::pair` of vertex handles). That is actually a kind of bug-fix, because it was documented as such in the user manual.
- The new member functions `subconstraints_and_contexts_begin()`, `subconstraints_and_contexts_end()`, `subconstraints_and_contexts()` are created get the old value type (`std::pair<const Subconstraint, std::list<Context>*>`).
- A few range types have changed from `CGAL::Iterator_range<It>` to `unspecified_type`, for efficiency reasons.
- Doc fixes.
== Determinism ==
Even if it was not documented, the range `subconstraints()` is deterministic (used by Mesh_2), and `subconstraints_and_contexts()` is not.
right after the merge of 4.14 release branch
+ manual fix on one line in:
* Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h
* .travis/generate_travis.sh
Introduce two new tags instead, to make the behavior change clearer.
Default tag for CDT2 is changed to keep the same behavior as before
(what was called 'No_intersection_tag' and is now called
'No_constraint_intersection_requiring_constructions_tag')