C ++使用const值增加ptr_map

时间:2015-03-06 22:36:54

标签: c++ boost

我正在处理一个现有项目,我正在尝试更换一个 std::map<AClass,const *BCLass> boost::ptr_map<AClass,const BClass> {{1}}。问题是我找不到将一对插入地图的方法。似乎所有插入函数都不能接受const值。有解决方案吗?我也尝试过使用boost :: assign :: ptr_map_insert()而没有运气。

问候。

1 个答案:

答案 0 :(得分:0)

这似乎是不受支持的

我甚至无法用boost::assign::ptr_map_insert¹

来实现神奇

我建议创建一个构建地图的函数,然后只返回一个const副本或对它的引用:

ptr_map<A,V> const m = make_my_map();

¹如果您有兴趣:

#include <boost/ptr_container/ptr_map.hpp>
#include <boost/assign/ptr_map_inserter.hpp>

struct A {
    int i;
    A(int i):i(i) {}
    bool operator<(A const& other) const { return i<other.i; }
};
struct B { std::string s;
    B(std::string s) : s(std::move(s)) { }
};

int main() {
    boost::ptr_map<A, /*const*/ B> m;

    boost::assign::ptr_map_insert(m)(42, "forty-two");
}