Modify

Ticket #9009 (closed Bugs: fixed)

Opened 8 months ago

Last modified 7 months ago

flat_set.insert() is ambigious

Reported by: Jon Kalb <boost@…> Owned by: igaztanaga
Milestone: To Be Determined Component: container
Version: Boost 1.54.0 Severity: Regression
Keywords: move Cc:

Description

Here is the code:

#include "boost/container/flat_set.hpp"

int main() {

boost::container::flat_set<int> const fs0;

boost::container::flat_set<int> fs1;

fs1.insert(fs0.begin(), fs0.end());

}

This is with C++03 not C++11.

The error is that the call to insert is ambiguous.

This is a regression. It doesn't happing in 1.49. (I think it was introduced by move support.)

I believe the issue is that if the iterators are of the same type, then the iterator pair insert is supposed to be preferred because the template that has both parameters being the same time is more specialized. But with the move semantic implementation macros, the form (const_iterator, value) is only templated on the second parameter so it isn't less specific.

Attachments

Change History

comment:1 Changed 7 months ago by igaztanaga

You are right. It was introduced by the move support. I think I have a fix for it.

comment:2 Changed 7 months ago by igaztanaga

  • Status changed from new to closed
  • Resolution set to fixed

(In [85660]) Fixes #9009

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.