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: igaztanaga
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 igaztanaga

  • Milestone set to Boost-1.45.0
  • Resolution set to fixed
  • Status changed from new to closed

Fixed for Boost 1.45 in release branch

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain igaztanaga.
The resolution will be deleted. Next status will be 'reopened'.
Author


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

 
Note: See TracTickets for help on using tickets.