Rewrite [flat_]map/set insert overloads to be more standard compliant. Fixes #102 ("flat_map::insert ambiguous with initializer list & pairs that need to convert").

This commit is contained in:
Ion Gaztañaga
2021-01-02 00:37:44 +01:00
parent d7e99e56c6
commit 0153ee1920

View File

@@ -103,6 +103,44 @@ int map_test_copyable(boost::container::dtl::true_type)
} }
if(!CheckEqualContainers(boostmap, stdmap)) return 1; if(!CheckEqualContainers(boostmap, stdmap)) return 1;
if(!CheckEqualContainers(boostmultimap, stdmultimap)) return 1; if(!CheckEqualContainers(boostmultimap, stdmultimap)) return 1;
boostmap.clear();
boostmap.clear();
boostmultimap.clear();
stdmultimap.clear();
//Now try from convertible pair
for(i = 0; i < MaxElem; ++i){
{
boostmap.insert(std::pair<unsigned, unsigned>(i, i));
stdmap.insert(StdPairType(i, i));
}
{
boostmultimap.insert(std::pair<unsigned, unsigned>(i, i));
stdmultimap.insert(StdPairType(i, i));
}
}
if(!CheckEqualContainers(boostmap, stdmap)) return 1;
if(!CheckEqualContainers(boostmultimap, stdmultimap)) return 1;
#if !defined BOOST_NO_CXX11_HDR_INITIALIZER_LIST
boostmap.clear();
boostmap.clear();
boostmultimap.clear();
stdmultimap.clear();
//Now try from convertible pair
for(i = 0; i < MaxElem; ++i){
{
boostmap.insert({IntType(i), IntType(i)});
stdmap.insert(StdPairType(i, i));
}
{
boostmultimap.insert({IntType(i), IntType(i)});
stdmultimap.insert(StdPairType(i, i));
}
}
if(!CheckEqualContainers(boostmap, stdmap)) return 1;
if(!CheckEqualContainers(boostmultimap, stdmultimap)) return 1;
#endif //BOOST_NO_CXX11_HDR_INITIALIZER_LIST
{ {
//Now, test copy constructor //Now, test copy constructor
MyBoostMap boostmapcopy(boostmap); MyBoostMap boostmapcopy(boostmap);