Modify

Opened 8 years ago

Closed 7 years ago

#3288 closed Bugs (fixed)

Mismatching return types in intrusive::unordered_set and underlying hashtable_impl erase_and_dispose

Reported by: florian.baumert@… 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.

Attachments (0)

Change History (1)

comment:1 Changed 7 years ago by Ion Gaztañaga

Milestone: Boost-1.45.0
Resolution: fixed
Status: newclosed

Fixed for Boost 1.45 in release branch

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Ion Gaztañaga.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.