`std::iterator_traits` requires that the iterator type defines all five nested types.
I have also modified the implementation of
```c++
make_prevent_deref_range(Range)
```
In case we triangulate, we have only one CDT2
In case we don't triangulate, we arrange intersection polygons and only
triangulate nested polygons (it's a bit more than non-simply connected
faces as the last level of nesting could be handled similarly to simply
connected faces).
## Summary of Changes
Solve issue_7164
## Release Management
* Affected package(s): Polygon_mesh_processing
* Issue(s) solved (if any): fix#7164
* Feature/Small Feature (if any):
* Link to compiled documentation (obligatory for small feature) [*wrong
link name to be changed*](httpssss://wrong_URL_to_be_changed/Manual/Pkg)
* License and copyright ownership: GF
## Summary of Changes
## Release Management
* Affected package(s):
* Issue(s) solved (if any): fix#0000, fix #0000,...
* Feature/Small Feature (if any):
* Link to compiled documentation (obligatory for small feature) [*wrong
link name to be changed*](httpssss://wrong_URL_to_be_changed/Manual/Pkg)
* License and copyright ownership:
## Summary of Changes
Defaulting to Convex_hull_traits_3 instead of
Kernel_traits<Point_3>::type
Prevents crash for point sets with [collinear
points](https://gist.github.com/soesau/351a3fa69e550a27fa629fc8e085da6a)
## Release Management
* Affected package(s): Convex_hull_3
## Summary of Changes
The function did not move vertices in higher levels.
### Todo
- [x] Check if fixes have to be made in 2D as well
- [x] Check the other functions moving vertices in the hierarchy
classes.
## Release Management
* Affected package(s): Triangulation_3
* License and copyright ownership: unchanged