title: CGAL error: computing the halfspace intersection without a given point cannot compile (boost::none?)
body: <p>I've built Boost 1.58.0 and CGAL 4.6 and linked them nicely in a project with the example code given <a href="http://doc.cgal.org/latest/Convex_hull_3/Convex_hull_3_2halfspace_intersection_3_8cpp-example.html#a4" rel="nofollow">here</a>. This compiles and works perfectly:</p>
  
  <pre><code>#include &lt;CGAL/Exact_predicates_inexact_constructions_kernel.h&gt;
  #include &lt;CGAL/Convex_hull_3/dual/halfspace_intersection_3.h&gt;
  #include &lt;CGAL/point_generators_3.h&gt;
  #include &lt;list&gt;
  typedef CGAL::Exact_predicates_inexact_constructions_kernel   K;
  typedef K::Plane_3                                            Plane;
  typedef K::Point_3                                            Point;
  typedef CGAL::Polyhedron_3&lt;K&gt;                                 Polyhedron_3;
  // compute the tangent plane of a point
  template &lt;typename K&gt;
  typename K::Plane_3 tangent_plane (typename K::Point_3 const&amp; p) {
      typename K::Vector_3 v(p.x(), p.y(), p.z());
      v = v / sqrt(v.squared_length());
      typename K::Plane_3 plane(v.x(), v.y(), v.z(), -(p - CGAL::ORIGIN) * v);
      return plane;
  }
  int main (void) {
      // number of generated planes
      int N = 200;
      // generates random planes on a sphere
      std::list&lt;Plane&gt; planes;
      CGAL::Random_points_on_sphere_3&lt;Point&gt; g;
      for (int i = 0; i &lt; N; i++) {
          planes.push_back(tangent_plane&lt;K&gt;(*g++));
      }
      // define polyhedron to hold the intersection
      Polyhedron_3 P;
      // compute the intersection
      // if a point inside the intersection is unknown, pass boost::none
      // to automatically found one using linear programming
      CGAL::halfspace_intersection_3(planes.begin(),
                                     planes.end(),
                                     P,
                                     Point(0, 0, 0)); // PROBLEMATIC WHEN REMOVED
      return 0;
  }
  </code></pre>
  
  <p>However, removing the last argument, or "correctly" (that is, according to the specs <a href="http://doc.cgal.org/latest/Convex_hull_3/group__PkgConvexHull3Functions.html#ga9cd990d6e33e680b0961370c09782671" rel="nofollow">here</a>) setting it to <code>boost::none</code> gives the following compile error:</p>
  
  <pre><code>||=== CGALtest, Debug ===|
  e:\Users\Bombax\Cpp\Libraries\CGAL-4.6\include\CGAL\Convex_hull_3\dual\halfspace_intersection_3.h||In function 'void CGAL::halfspace_intersection_3(PlaneIterator, PlaneIterator, Polyhedron&amp;) [with PlaneIterator = std::_List_iterator&lt;CGAL::Plane_3&lt;CGAL::Epick&gt; &gt;, Polyhedron = Polyhedron_3]':|
  e:\Users\Bombax\Cpp\Tests\CGALtest\example.cpp|33|instantiated from here|
  e:\Users\Bombax\Cpp\Libraries\CGAL-4.6\include\CGAL\Convex_hull_3\dual\halfspace_intersection_3.h|318|error: invalid initialization of reference of type 'const CGAL::Point_3&lt;CGAL::Epick&gt;&amp;' from expression of type 'const boost::none_t'|
  e:\Users\Bombax\Cpp\Libraries\CGAL-4.6\include\CGAL\Convex_hull_3\dual\halfspace_intersection_3.h|323|error: in passing argument 4 of 'void CGAL::halfspace_intersection_3(PlaneIterator, PlaneIterator, Polyhedron&amp;, const typename Polyhedron::Vertex::Point_3&amp;) [with PlaneIterator = std::_List_iterator&lt;CGAL::Plane_3&lt;CGAL::Epick&gt; &gt;, Polyhedron = CGAL::Polyhedron_3&lt;CGAL::Epick, CGAL::Polyhedron_items_3, CGAL::HalfedgeDS_default, std::allocator&lt;int&gt; &gt;]'|
  e:\Users\Bombax\Cpp\Libraries\boost_1_58_0\boost\system\error_code.hpp|221|warning: 'boost::system::posix_category' defined but not used|
  e:\Users\Bombax\Cpp\Libraries\boost_1_58_0\boost\system\error_code.hpp|222|warning: 'boost::system::errno_ecat' defined but not used|
  e:\Users\Bombax\Cpp\Libraries\boost_1_58_0\boost\system\error_code.hpp|223|warning: 'boost::system::native_ecat' defined but not used|
  ||=== Build finished: 2 errors, 3 warnings ===|
  </code></pre>
  
  <p>What's going on here? Did Boost change something making it impossible to use <code>boost::none</code>?</p>
  
  <p>Thanks for your help.</p>