C++11 使用boost::icl::interval\u映射和std::shared\u ptr

C++11 使用boost::icl::interval\u映射和std::shared\u ptr,c++11,boost-icl,C++11,Boost Icl,我希望将共享指针与boost::icl::interval\u map一起使用,类似于以下内容: namespace icl = boost::icl; icl::interval_map<int, std::shared_ptr<const std::string>> party; const auto mary = std::make_shared<const std::string>("Mary"); party += make_pair(icl::in

我希望将共享指针与
boost::icl::interval\u map
一起使用,类似于以下内容:

namespace icl = boost::icl;
icl::interval_map<int, std::shared_ptr<const std::string>> party;
const auto mary = std::make_shared<const std::string>("Mary");
party += make_pair(icl::interval<int>::right_open(10, 16), mary);
在中的“重叠时聚合”一节中,它指出映射到的类型需要支持集合并集

工作版本:

namespace icl = boost::icl;
using setOfPointers = std::set<std::shared_ptr<const std::string>>;
icl::interval_map<int, setOfPointers> party;
const auto mary = setOfPointers{std::make_shared<const std::string>("Mary")};
party += make_pair(icl::interval<int>::right_open(10, 16), mary);
名称空间icl=boost::icl;
使用setOfPointers=std::set;
icl::间隔映射方;
const auto mary=指针集{std::make_shared(“mary”)};
party+=配对(icl::interval::right\u open(10,16),mary);
namespace icl = boost::icl;
using setOfPointers = std::set<std::shared_ptr<const std::string>>;
icl::interval_map<int, setOfPointers> party;
const auto mary = setOfPointers{std::make_shared<const std::string>("Mary")};
party += make_pair(icl::interval<int>::right_open(10, 16), mary);