title: Issue with removing points from a boost::geometry::index::rtree
body: <p>I'm using boost 1.56 on OS X, installed through homebrew.</p>
  
  <p>I'm running into a compilation problem - specifically, it appears that I cannot remove values from a boost::geometry::index::rtree. </p>
  
  <p>Here's the code I've come up with so far:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;vector&gt;
  #include &lt;string&gt;
  #include &lt;boost/geometry.hpp&gt;
  #include &lt;boost/geometry/geometries/point.hpp&gt;
  #include &lt;boost/geometry/geometries/box.hpp&gt;
  #include &lt;boost/geometry/index/rtree.hpp&gt;
  
  namespace bg = boost::geometry;
  namespace bgm = bg::model;
  namespace bgi = bg::index;
  
  typedef bgm::point&lt;float, 2, bg::cs::spherical_equatorial&lt;bg::degree&gt; &gt; Point;
  typedef bgm::box&lt;Point&gt; Box;
  typedef std::pair&lt;Box, int&gt; BoxIdPair;
  
  int main(int argc, char** argv) {
    bgi::rtree&lt;BoxIdPair, bgi::rstar&lt;16&gt;&gt; tree;
    // Some tree filling code excised from here for the sake of a minimal example.
    BoxIdPair b1 = std::make_pair(Box(Point(24, 19), Point(35, 26)), 100);
    BoxIdPair b2 = std::make_pair(Box(Point(41, 112), Point(54, 148)), 150);
    BoxIdPair b3 = std::make_pair(Box(Point(34, 24), Point(36, 100)), 92);
    BoxIdPair b4 = std::make_pair(Box(Point(21, 8), Point(43, 15)), 8);
    tree.insert(b1);
    tree.insert(b2);
    tree.insert(b3);
    tree.insert(b4);
    while (!tree.empty()) {
      std::cout &lt;&lt; "Tree contains " &lt;&lt; tree.size() &lt;&lt; "box-id values." &lt;&lt; std::endl;
      // 1. Choose arbitrary BoxIdPair to be the leader of a new canopy.
      //    Remove it from the tree. Insert it into the canopy map, with its corresponding id.
      Point origin(0.0, 0.0);
      std::vector&lt;BoxIdPair&gt; result_set;
      tree.query(bgi::nearest(origin, 1), std::back_inserter(result_set));
      Box b = result_set[0].first;
      int id = result_set[0].second;
      tree.remove(result_set[0]); // This is the line that is giving me difficulty, I think.
  
      // Additional code cut for minimal example
    }
  }
  </code></pre>
  
  <p>This code does not compile! 
  Specifically, here is the invocation:</p>
  
  <p><code>clang++ -g -std=c++11 -L/usr/local/Cellar/boost/1.56.0/lib -I/usr/local/Cellar/boost/1.56.0/include test.cc -o test</code></p>
  
  <p>And here are the errors emitted by the compiler (link to pastebin for brevity):
  <a href="http://pastebin.com/d7E0A4Ee" rel="nofollow">http://pastebin.com/d7E0A4Ee</a></p>
  
  <p>The three relevant errors are:</p>
  
  <pre><code>test.cc:71:10: note: in instantiation of member function 'boost::geometry::index::rtree&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2,
        boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt;, boost::geometry::index::rstar&lt;16, 4, 4, 32&gt;,
        boost::geometry::index::indexable&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
        boost::geometry::index::equal_to&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
        std::__1::allocator&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt; &gt;::remove' requested here
  tree.remove(result_set[0]);
       ^
  /usr/local/Cellar/boost/1.56.0/include/boost/geometry/strategies/concepts/within_concept.hpp:183:21: note: candidate template ignored: couldn't infer template argument 'ApplyMethod'
      static void apply(ApplyMethod const&amp;)
  </code></pre>
  
  <h2>                    ^</h2>
  
  <pre><code>test.cc:71:10: note: in instantiation of member function 'boost::geometry::index::rtree&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2,
    boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt;, boost::geometry::index::rstar&lt;16, 4, 4, 32&gt;,
        boost::geometry::index::indexable&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
        boost::geometry::index::equal_to&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
        std::__1::allocator&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt; &gt;::remove' requested here
  tree.remove(result_set[0]);
       ^
  /usr/local/Cellar/boost/1.56.0/include/boost/mpl/assert.hpp:83:5: note: candidate function [with C = false] not viable: no known conversion from 'boost::mpl::failed
    ************(boost::geometry::nyi::not_implemented_error&lt;boost::geometry::info::BOX, boost::geometry::info::BOX, void&gt;::THIS_OPERATION_IS_NOT_OR_NOT_YET_IMPLEMENTED::************)(types&lt;boost::geometry::info::BOX,
    boost::geometry::info::BOX, void&gt;)' to 'typename assert&lt;false&gt;::type' (aka 'mpl_::assert&lt;false&gt;') for 1st argument
  int assertion_failed( typename assert&lt;C&gt;::type );
  </code></pre>
  
  <h2>        ^</h2>
  
  <pre><code>test.cc:71:10: note: in instantiation of member function 'boost::geometry::index::rtree&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2,
    boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt;,   boost::geometry::index::rstar&lt;16, 4, 4, 32&gt;,
        boost::geometry::index::indexable&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
    boost::geometry::index::equal_to&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt;,
    std::__1::allocator&lt;std::__1::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, int&gt; &gt; &gt;::remove' requested here
  tree.remove(result_set[0]);
       ^
  /usr/local/Cellar/boost/1.56.0/include/boost/geometry/algorithms/detail/relate/relate.hpp:282:1: note: candidate template ignored: substitution failure [with MatrixOrMask =
    boost::mpl::vector&lt;boost::geometry::detail::relate::static_mask&lt;'T', '*', 'F', '*', '*', 'F', '*', '*', '*'&gt;, boost::geometry::detail::relate::static_mask&lt;'*', 'T', 'F', '*', '*', 'F', '*', '*', '*'&gt;,
    boost::geometry::detail::relate::static_mask&lt;'*', '*', 'F', 'T', '*', 'F', '*', '*', '*'&gt;, boost::geometry::detail::relate::static_mask&lt;'*', '*', 'F', '*', 'T', 'F', '*', '*', '*'&gt;, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
    mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na&gt;, Geometry1 = boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2,
    boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; &gt;, Geometry2 = boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2, boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt;
    &gt;]
  relate(Geometry1 const&amp; geometry1,
  ^
  </code></pre>
  
  <p>Anyone have thoughts on what might be going wrong? I'm mystified.</p>