Opened 6 years ago

Closed 6 years ago

#12761 closed Bugs (fixed)

intrusive::set::swap doesn't swap the comparison function

Reported by: fdegros@… Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: intrusive
Version: Boost 1.60.0 Severity: Problem
Keywords: Cc: fdegros@…

Description

If you have two Boost intrusive set or multiset objets with a stateful comparison function, swapping them with the swap method doesn't seem to swap the state of their comparison functions.

Is it normal?

Using std::swap doesn't swap their comparison function either, which seems to suggest that set's and multiset's move assignment operator doesn't move the comparison function.

However, it seems that set's and multiset's move constructor does copy the comparison function (by using its copy constructor, not its move constructor though).

Change History (3)

comment:1 by fdegros@…, 6 years ago

Ping? Any idea or progress on this topic?

comment:2 by Ion Gaztañaga, 6 years ago

Thanks for the report and the ping. Yes, it's clearly a bug, I'd try to fix it ASAP.

comment:3 by Ion Gaztañaga, 6 years ago

Resolution: fixed
Status: newclosed

This was fixed some weeks ago in commit:

https://github.com/boostorg/intrusive/commit/6510ac498e0f9e54bf2a962a703352dac54158d2

Thanks for the report.

Note: See TracTickets for help on using tickets.