GUDHI / gudhi-devel

The GUDHI library is a generic open source C++ library, with a Python interface, for Topological Data Analysis (TDA) and Higher Dimensional Geometry Understanding.
https://gudhi.inria.fr/
MIT License
245 stars 65 forks source link

cech_complex_example_from_points fails to compile with CGAL 5.1 #1095

Open VincentRouvreau opened 6 days ago

VincentRouvreau commented 6 days ago

src/Cech_complex/example/cech_complex_example_from_points.cpp fails to compile with CGAL 5.1, but it is fixed in CGAL 5.1.5+:

In file included from /custom-cgal/include/boost/none_t.hpp:17,
                 from /custom-cgal/include/boost/none.hpp:17,
                 from /custom-cgal/include/boost/optional/optional.hpp:60,
                 from /custom-cgal/include/boost/optional.hpp:15,
                 from /CGAL-5.1/include/CGAL/Object.h:30,
                 from /CGAL-5.1/include/CGAL/kernel_basic.h:25,
                 from /CGAL-5.1/include/CGAL/basic.h:35,
                 from /CGAL-5.1/include/CGAL/NewKernel_d/Cartesian_base.h:15,
                 from /CGAL-5.1/include/CGAL/Epick_d.h:17,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:14,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:15,
                 from /gudhi-devel/src/Cech_complex/example/cech_complex_example_from_points.cpp:1:
/custom-cgal/include/boost/function_output_iterator.hpp:14:1: note: ‘#pragma message: This header is deprecated. Use <boost/iterator/function_output_iterator.hpp> instead.’
   14 | BOOST_HEADER_DEPRECATED("<boost/iterator/function_output_iterator.hpp>")
      | ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /custom-cgal/include/boost/none_t.hpp:17,
                 from /custom-cgal/include/boost/none.hpp:17,
                 from /custom-cgal/include/boost/optional/optional.hpp:60,
                 from /custom-cgal/include/boost/optional.hpp:15,
                 from /CGAL-5.1/include/CGAL/Object.h:30,
                 from /CGAL-5.1/include/CGAL/kernel_basic.h:25,
                 from /CGAL-5.1/include/CGAL/basic.h:35,
                 from /CGAL-5.1/include/CGAL/NewKernel_d/Cartesian_base.h:15,
                 from /CGAL-5.1/include/CGAL/Epick_d.h:17,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:14,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:15,
                 from /gudhi-devel/src/Cech_complex/utilities/cech_persistence.cpp:11:
/custom-cgal/include/boost/function_output_iterator.hpp:14:1: note: ‘#pragma message: This header is deprecated. Use <boost/iterator/function_output_iterator.hpp> instead.’
   14 | BOOST_HEADER_DEPRECATED("<boost/iterator/function_output_iterator.hpp>")
      | ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /CGAL-5.1/include/CGAL/NewKernel_d/KernelD_converter.h:20,
                 from /CGAL-5.1/include/CGAL/NewKernel_d/Cartesian_filter_K.h:16,
                 from /CGAL-5.1/include/CGAL/Epick_d.h:19,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:14,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:15,
                 from /gudhi-devel/src/Cech_complex/example/cech_complex_example_from_points.cpp:1:
/CGAL-5.1/include/CGAL/NT_converter.h: In instantiation of ‘NT2 CGAL::NT_converter<NT1, NT2>::operator()(const NT1&) const [with NT1 = CGAL::Lazy_exact_nt<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >; NT2 = float]’:
/gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:49:32:   required from ‘Filtration_value Gudhi::cech_complex::Sphere_circumradius<Kernel, Filtration_value>::operator()(const Point&, const Point&) const [with Kernel = CGAL::Epeck_d<CGAL::Dimension_tag<2> >; Filtration_value = float; Gudhi::cech_complex::Sphere_circumradius<Kernel, Filtration_value>::Point = CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dimension_tag<2> > >]’
/gudhi-devel/src/common/include/gudhi/graph_simplicial_complex.h:79:21:   required from ‘Gudhi::Proximity_graph<SimplicialComplexForProximityGraph> Gudhi::compute_proximity_graph(const ForwardPointRange&, typename SimplicialComplexForProximityGraph::Filtration_value, Distance) [with SimplicialComplexForProximityGraph = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; ForwardPointRange = std::vector<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dimension_tag<2> > > >; Distance = Gudhi::cech_complex::Sphere_circumradius<CGAL::Epeck_d<CGAL::Dimension_tag<2> >, float>; Gudhi::Proximity_graph<SimplicialComplexForProximityGraph> = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, boost::property<Gudhi::vertex_filtration_t, float, boost::no_property>, boost::property<Gudhi::edge_filtration_t, float, boost::no_property>, boost::no_property, boost::listS>; typename SimplicialComplexForProximityGraph::Filtration_value = float]’
/gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:76:91:   required from ‘Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Cech_complex(const InputPointRange&, Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Filtration_value, bool) [with InputPointRange = std::vector<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dimension_tag<2> > > >; Kernel = CGAL::Epeck_d<CGAL::Dimension_tag<2> >; SimplicialComplexForCechComplex = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Filtration_value = float]’
/gudhi-devel/src/Cech_complex/example/cech_complex_example_from_points.cpp:36:59:   required from here
/CGAL-5.1/include/CGAL/NT_converter.h:33:16: error: invalid cast from type ‘const CGAL::Lazy_exact_nt<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >’ to type ‘float’
   33 |         return NT2(a);
      |                ^~~~~~
In file included from /CGAL-5.1/include/CGAL/NewKernel_d/KernelD_converter.h:20,
                 from /CGAL-5.1/include/CGAL/NewKernel_d/Cartesian_filter_K.h:16,
                 from /CGAL-5.1/include/CGAL/Epick_d.h:19,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:14,
                 from /gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:15,
                 from /gudhi-devel/src/Cech_complex/utilities/cech_persistence.cpp:11:
/CGAL-5.1/include/CGAL/NT_converter.h: In instantiation of ‘NT2 CGAL::NT_converter<NT1, NT2>::operator()(const NT1&) const [with NT1 = CGAL::Lazy_exact_nt<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >; NT2 = float]’:
/gudhi-devel/src/Cech_complex/include/gudhi/Sphere_circumradius.h:49:32:   required from ‘Filtration_value Gudhi::cech_complex::Sphere_circumradius<Kernel, Filtration_value>::operator()(const Point&, const Point&) const [with Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>; Filtration_value = float; Gudhi::cech_complex::Sphere_circumradius<Kernel, Filtration_value>::Point = CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag> >]’
/gudhi-devel/src/common/include/gudhi/graph_simplicial_complex.h:79:21:   required from ‘Gudhi::Proximity_graph<SimplicialComplexForProximityGraph> Gudhi::compute_proximity_graph(const ForwardPointRange&, typename SimplicialComplexForProximityGraph::Filtration_value, Distance) [with SimplicialComplexForProximityGraph = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; ForwardPointRange = std::vector<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag> >, std::allocator<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag> > > >; Distance = Gudhi::cech_complex::Sphere_circumradius<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>, float>; Gudhi::Proximity_graph<SimplicialComplexForProximityGraph> = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, boost::property<Gudhi::vertex_filtration_t, float, boost::no_property>, boost::property<Gudhi::edge_filtration_t, float, boost::no_property>, boost::no_property, boost::listS>; typename SimplicialComplexForProximityGraph::Filtration_value = float]’
/gudhi-devel/src/Cech_complex/include/gudhi/Cech_complex.h:76:91:   required from ‘Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Cech_complex(const InputPointRange&, Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Filtration_value, bool) [with InputPointRange = std::vector<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag> >, std::allocator<CGAL::Wrap::Point_d<CGAL::Epeck_d<CGAL::Dynamic_dimension_tag> > > >; Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>; SimplicialComplexForCechComplex = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; Gudhi::cech_complex::Cech_complex<Kernel, SimplicialComplexForCechComplex>::Filtration_value = float]’
/gudhi-devel/src/Cech_complex/utilities/cech_persistence.cpp:46:16:   required from ‘Simplex_tree create_simplex_tree(const string&, bool, Filtration_value, int) [with Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>; Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; std::string = std::__cxx11::basic_string<char>; Filtration_value = float]’
/gudhi-devel/src/Cech_complex/utilities/cech_persistence.cpp:78:40:   required from here
/CGAL-5.1/include/CGAL/NT_converter.h:33:16: error: invalid cast from type ‘const CGAL::Lazy_exact_nt<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >’ to type ‘float’
   33 |         return NT2(a);
      |                ^~~~~~
make[2]: *** [src/Cech_complex/example/CMakeFiles/Cech_complex_example_from_points.dir/build.make:76: src/Cech_complex/example/CMakeFiles/Cech_complex_example_from_points.dir/cech_complex_example_from_points.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3381: src/Cech_complex/example/CMakeFiles/Cech_complex_example_from_points.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [src/Cech_complex/utilities/CMakeFiles/cech_persistence.dir/build.make:76: src/Cech_complex/utilities/CMakeFiles/cech_persistence.dir/cech_persistence.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3433: src/Cech_complex/utilities/CMakeFiles/cech_persistence.dir/all] Error 2
make: *** [Makefile:146: all] Error 2