#include #include #include // Add C++20 utilities to C++14 template using iter_value_t = std::remove_reference_t())>; template using range_value_t = iter_value_t()))>>; template< class T, class U > constexpr bool is_same_v = std::is_same::value; template< class T, class U > constexpr bool is_convertible_v = std::is_convertible::value; #include #include using Triangulation = CGAL::Triangulation_3; using Vertex_handle = Triangulation::Vertex_handle; Triangulation t; // Tds::vertex_handles() -> Vertex_handle static_assert(is_same_v, const Vertex_handle>); // Triangulation::all_vertex_handles() -> Vertex_handle static_assert(is_same_v, const Vertex_handle>); // Triangulation::finite_vertex_handles() -> convertible to Vertex_handle static_assert(is_convertible_v); // But is it equal to Vertex_handle static_assert(is_same_v, const Vertex_handle>); int main() { Vertex_handle v_inf = t.infinite_vertex(); for(auto v: t.finite_vertex_handles()) { Vertex_handle v2 = v; CGAL_USE(v2); if(v == v_inf) return 1; } for (auto v : t.all_vertex_handles()) { Vertex_handle v2 = v; CGAL_USE(v2); if (v == v_inf) std::cout << "found inf" << std::endl; } return 0; }