id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 3288,Mismatching return types in intrusive::unordered_set and underlying hashtable_impl erase_and_dispose,florian.baumert@…,Ion Gaztañaga,"In intrusive::unordered_set, it is defined as: {{{ 462 template 463 iterator erase_and_dispose(const_iterator i, Disposer disposer) 464 { return table_.erase_and_dispose(i, disposer); } 465 466 #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) 467 template 468 iterator erase_and_dispose(iterator i, Disposer disposer) 469 { return this->erase_and_dispose(const_iterator(i), disposer); } 470 #endif }}} whereas hashtable_impl defines the same functions (calles by unordered_set) as {{{ 1299 template 1300 void erase_and_dispose(const_iterator i, Disposer disposer) 1301 { 1302 priv_erase(i, disposer, optimize_multikey_t()); 1303 this->priv_size_traits().decrement(); 1304 priv_erasure_update_cache(); 1305 } 1306 1307 #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) 1308 template 1309 iterator erase_and_dispose(iterator i, Disposer disposer) 1310 { return this->erase_and_dispose(const_iterator(i), disposer); } 1311 #endif }}} If you call erase_and_dispose with a const_iterator, the compiler has a point in saying that he can not convert void to iterator.",Bugs,closed,Boost 1.45.0,intrusive,Boost 1.39.0,Problem,fixed,,