title: Insert into boost::BIMAP using BOOST::associative property map ... failed
body: <p>With reference to my previously asked question about boost::bimaps and boost associative property maps interface <a href="https://stackoverflow.com/questions/21654594/using-boostassociative-property-map-with-boostbimap-interface/21660622#21660622">here</a>, I want to use Put and  Get helper functions for my bimap. </p>
  
  <p>With reference to a sample code given <a href="http://coliru.stacked-crooked.com/a/f1e7301501fa7f98" rel="nofollow noreferrer">here</a>, I tried to add the following and i get a long compile error for assertion failed ... Here is the code :</p>
  
  <pre><code>#include &lt;boost/bimap.hpp&gt; 
  #include &lt;boost/property_map/property_map.hpp&gt; 
  #include &lt;boost/bimap/property_map/set_support.hpp&gt;
  #include &lt;iostream&gt; 
  
  using namespace boost; 
  
  int main() 
  {
    typedef int vertex_descriptor_t;
    typedef boost::bimaps::bimap&lt; vertex_descriptor_t, size_t &gt; vd_idx_bimap_t;
    typedef boost::associative_property_map&lt;vd_idx_bimap_t::left_map&gt;   asso_vd_idx_bimap_t;
  
    // define bimap
    vd_idx_bimap_t        my_bimap;
    asso_vd_idx_bimap_t   my_asso_bimap(my_bimap.left);
  
    typedef typename vd_idx_bimap_t::value_type value_type;    
    my_bimap.insert( value_type( 1, 100 ) );
    // print bimap
    for(auto t = my_bimap.left.begin(); t != my_bimap.left.end(); ++t)
        std::cout &lt;&lt; t-&gt;first &lt;&lt; " " &lt;&lt; t-&gt;second &lt;&lt;  "\n";
  
    int z = 1;
    std::cout &lt;&lt; "value = " &lt;&lt; get ( my_bimap.left, z ) &lt;&lt; std::endl;    // prints correctly value = 100
  
  
    // ERROR here . 
    boost::put( my_asso_bimap, 2, 19 );
  
   } 
  </code></pre>
  
  <p>It gives error as: ( a long list. but i have just put a snippet )</p>
  
  <pre><code>  cannot convert âboost::bimaps::detail::non_mutable_data_unique_map_view_access&lt;Derived, Tag, BimapType&gt;::operator[](const CompatibleKey&amp;)::BIMAP_STATIC_ERROR__OPERATOR_BRACKET_IS_NOT_SUPPORTED360::assert_arg&lt;long unsigned int&gt;()â (type âmpl_::failed************ (boost::bimaps::detai
  </code></pre>
  
  <p>There is also one error which gives me error at line number 364 of the file (property_map.hpp) in boost </p>
  
  <pre><code>  put(const put_get_helper&lt;Reference, PropertyMap&gt;&amp; pa, K k, const V&amp; v)
   {
     static_cast&lt;const PropertyMap&amp;&gt;(pa)[k] = v;
    }
  </code></pre>
  
  <p>I understand the error that associative map cannot mutate the data as it references to the left map view . but How do I use put and get helper functions ? </p>
  
  <p>I can use GET (my_bimap.left, z ) functions, but I am not able to use PUT function. I wanted to use associative property map for get and put functions to operate on actual bimap so that i dont have to use insert( value_type() )... </p>
  
  <p>I hope I am clear enough for my problem. Please suggest. </p>