fix the static assertions

... by using Boost containers instead of those from the STL.
This commit is contained in:
Laurent Rineau 2025-04-30 11:32:18 +02:00
parent 1f7536bfac
commit b190978599
2 changed files with 13 additions and 10 deletions

View File

@ -20,17 +20,18 @@
#include <CGAL/Conforming_constrained_Delaunay_triangulation_vertex_data_3.h>
#include <CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h>
#include <CGAL/Triangulation_segment_traverser_3.h>
#include <CGAL/unordered_flat_set.h>
#include <CGAL/Mesh_3/io_signature.h>
#include <CGAL/IO/File_binary_mesh_3.h>
#include <boost/container/flat_set.hpp>
#include <boost/container/map.hpp>
#include <boost/container/small_vector.hpp>
#include <boost/iterator/function_output_iterator.hpp>
#include <fstream>
#include <bitset>
#include <unordered_set>
#ifndef DOXYGEN_RUNNING
@ -39,6 +40,7 @@ namespace CGAL {
template <typename T_3>
class Conforming_Delaunay_triangulation_3 : public T_3 {
public:
static constexpr bool t_3_is_not_movable = false == CGAL::is_nothrow_movable_v<T_3>;
using Geom_traits = typename T_3::Geom_traits;
using Vertex_handle = typename T_3::Vertex_handle;
using Edge = typename T_3::Edge;
@ -935,14 +937,14 @@ protected:
double segment_vertex_epsilon = 1e-8;
std::optional<double> max_bbox_edge_length;
using Pair_of_vertex_handles = std::pair<Vertex_handle, Vertex_handle>;
std::map<Pair_of_vertex_handles, Constrained_polyline_id> pair_of_vertices_to_cid;
boost::container::map<Pair_of_vertex_handles, Constrained_polyline_id> pair_of_vertices_to_cid;
Insert_in_conflict_visitor insert_in_conflict_visitor = {this};
using Stack_info = std::pair<Subconstraint, Constrained_polyline_id>;
using Subconstraints_to_conform = std::stack<Stack_info, std::vector<Stack_info>>;
Subconstraints_to_conform subconstraints_to_conform;
std::vector<std::unordered_set<Vertex_handle>> all_finite_edges;
std::vector<CGAL::unordered_flat_set<Vertex_handle>> all_finite_edges;
bool update_all_finite_edges_ = false;
void update_all_finite_edges() {

View File

@ -49,6 +49,7 @@
#include <boost/container/flat_set.hpp>
#include <boost/container/map.hpp>
#include <boost/container/small_vector.hpp>
#include <boost/dynamic_bitset.hpp>
#include <boost/graph/breadth_first_search.hpp>
@ -59,7 +60,6 @@
#include <algorithm>
#include <optional>
#include <unordered_map>
#include <vector>
#if CGAL_CXX20 && __has_include(<ranges>)
# include <ranges>
@ -544,10 +544,9 @@ public:
private:
using DT_3 = Delaunay_triangulation_3<Traits, typename Triangulation::Triangulation_data_structure>;
static_assert(std::is_base_of_v<Triangulation, DT_3>);
static_assert(CGAL::is_nothrow_movable_v<DT_3>);
using CDT_3_impl = Conforming_constrained_Delaunay_triangulation_3_impl<DT_3>;
static_assert(CGAL::is_nothrow_movable_v<CDT_3_impl>);
static_assert(CDT_3_impl::t_3_is_not_movable || CGAL::is_nothrow_movable_v<CDT_3_impl>);
CDT_3_impl cdt_impl = {};
@ -928,7 +927,8 @@ public:
}
}
Conforming_constrained_Delaunay_triangulation_3 result{std::move(*this)};
static_assert(CGAL::is_nothrow_movable_v<Conforming_constrained_Delaunay_triangulation_3>);
static_assert(CGAL::is_nothrow_movable_v<Triangulation> == false ||
CGAL::is_nothrow_movable_v<Conforming_constrained_Delaunay_triangulation_3>);
static_assert(std::is_same_v<std::remove_reference_t<decltype(*this)>, Conforming_constrained_Delaunay_triangulation_3>);
*this = Conforming_constrained_Delaunay_triangulation_3{};
return result;
@ -1020,6 +1020,7 @@ class Conforming_constrained_Delaunay_triangulation_3_impl : public Conforming_D
public:
using Conforming_Dt = Conforming_Delaunay_triangulation_3<T_3>;
using Conforming_Dt::tr;
static_assert(Conforming_Dt::t_3_is_not_movable || CGAL::is_nothrow_movable_v<Conforming_Dt>);
using Vertex_handle = typename T_3::Vertex_handle;
using Edge = typename T_3::Edge;
@ -1070,7 +1071,7 @@ private:
{
using Projection_traits_3<Geom_traits>::Projection_traits_3; // inherit cstr
};
static_assert(CGAL::is_nothrow_movable<Projection_traits>::value);
static_assert(CGAL::is_nothrow_movable_v<Projection_traits>);
struct Vertex_info
{
@ -3918,7 +3919,7 @@ protected:
bool is_reverse = false;
};
std::vector<std::vector<std::vector<Face_edge>>> face_borders;
std::multimap<Constrained_polyline_id, CDT_3_signed_index> constraint_to_faces;
boost::container::multimap<Constrained_polyline_id, CDT_3_signed_index> constraint_to_faces;
// boost::dynamic_bitset<> face_constraint_misses_subfaces;
// std::size_t face_constraint_misses_subfaces_find_first() const {
@ -3934,7 +3935,7 @@ protected:
// face_constraint_misses_subfaces.reset(pos);
// }
// static inline constexpr std::size_t face_constraint_misses_subfaces_npos = boost::dynamic_bitset<>::npos;
static_assert(false == CGAL::is_nothrow_movable_v<boost::dynamic_bitset<>>);
// static_assert(false == CGAL::is_nothrow_movable_v<boost::dynamic_bitset<>>);
std::vector<bool> face_constraint_misses_subfaces;
std::size_t face_constraint_misses_subfaces_find_first(std::size_t pos = 0) const {
auto it = std::find(face_constraint_misses_subfaces.begin() + pos, face_constraint_misses_subfaces.end(), true);