Sorry to keep replying to myself.<br><br>To fix this I chaged:<br>    return const_iterator(bucket_type::s_iterator_to(priv_value_to_node(const_cast&lt;reference&gt;(value))), this);<br>to:<br>
    return const_iterator(bucket_type::s_iterator_to(const_cast&lt;node &amp;&gt;(priv_value_to_node(value))), this);<br>in file<br>
   boost/intrusive/hashtable.hpp: <br>
(near line 1682 in version 1_38_0)<br><br>The original code appears to be trying to call the non-const version of priv_value_to_node() by casting away the constness of the value parameter, but it doesn&#39;t work because the &#39;this&#39; pointer is still const. <br>
<br>So, the const version of priv_value_to_node() is called instead, returning a const reference.<br><br>That const reference is passed to the const version of bucket_type::s_iterator_to(), which returns a const bucket (slist) iterator.<br>
<br>Finally, a const_iterator is constructed from the const bucket iterator, but there is no constructor to support this.<br><br>The lack of supporting iterator constructor seems to be by-design, because the iterator&#39;s internal slist_it_ is always non const.<br>
<br>Either casting away the constness of the this this pointer when calling priv_value_to_node(), or casting away the constness of the returned node reference will fix the problem.<br><br>I added a const_cast to the return from priv_value_to_node() and got rid of the const_cast on the input value reference (no longer necessary).<br>
<br><br>Thanks,<br>Paul Rose<br><br>
<br><br>

