I write some years ago this compiled with CGAL-4.1:
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/basic.h>
#include <CGAL/Search_traits_2.h>
#include <CGAL/Search_traits_adapter.h>
#include <CGAL/Kd_tree.h>
#include <CGAL/Fuzzy_iso_box.h>
#include <CGAL/Timer.h>
#include <boost/iterator/zip_iterator.hpp>
#include <utility>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
#include <fstream>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
#include <omp.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_2 Point_2;
typedef boost::tuple < Point_2, int > Point_and_int;
//definition of the property map
class My_point_property_map
{
public:
typedef Point_2 value_type;
typedef const value_type& reference;
typedef const Point_and_int& key_type;
typedef boost::lvalue_property_map_tag category;
// typedef boost::readable_property_map_tag category;
};
//get function for the property map
My_point_property_map::reference
get (My_point_property_map, My_point_property_map::key_type p)
{
return boost::get <0> (p);
}...
If compiled (CGAL-4.5) with typedef boost::readable_property_map_tag category;
the following error occurs:
In file included from /usr/include/CGAL/assertions.h:36:0, from /usr/include/CGAL/basic.h:42, from /usr/include/CGAL/Cartesian/Cartesian_base.h:28, from /usr/include/CGAL/Simple_cartesian.h:28, from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:28, from /home/bruno/ex_cgal/New_Vellin_omp.cpp:5: /usr/include/CGAL/Search_traits_adapter.h: In instantiation of ‘class CGAL::Search_traits_adapter, int>, My_point_property_map, CGAL::Search_traits_2 >’:/home/bruno/ex_cgal/New_Vellin_omp.cpp:56:38: required from here /usr/include/CGAL/Search_traits_adapter.h:75:3: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE’ BOOST_STATIC_ASSERT( ( boost::is_same< boost::lvalue_property_map_tag,
If compiled (CGAL-4.5) with typedef boost::lvalue_property_map_tag category;
, it works.
Note that with CGAL-4.1 and typedef boost::readable_property_map_tag category;
there are no compilation errors.
Missing code:
typedef CGAL::Search_traits_2 < Kernel > Traits_base;
typedef CGAL::Search_traits_adapter < Point_and_int, My_point_property_map, Traits_base > Traits;
typedef CGAL::Fuzzy_iso_box < Traits > Fuzzy_iso_box;
typedef const CGAL::Kd_tree < Traits > Tree;
lvalue_property_map_tag
. The error you have is a static assertion checking that the property map provided has the requirements needed by the algorithm. – sloriot