Modify

Ticket #3288 (closed Bugs: fixed)

Opened 5 years ago

Last modified 4 years ago

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

Change History

comment:1 Changed 4 years ago by igaztanaga

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

Fixed for Boost 1.45 in release branch

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
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.