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