Opened 13 years ago
Closed 12 years ago
#3288 closed Bugs (fixed)
Mismatching return types in intrusive::unordered_set and underlying hashtable_impl erase_and_dispose
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | Boost 1.45.0 | Component: | intrusive |
Version: | Boost 1.39.0 | Severity: | Problem |
Keywords: | Cc: |
Description
In intrusive::unordered_set, it is defined as:
462 template<class Disposer> 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<class Disposer> 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<class Disposer> 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<class Disposer> 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.
Change History (1)
comment:1 by , 12 years ago
Milestone: | → Boost-1.45.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Fixed for Boost 1.45 in release branch