【问题标题】:Boost ICL not working as expected, std::set operator+= expectedBoost ICL 未按预期工作,std::set operator+= 预期
【发布时间】:2012-08-28 19:21:12
【问题描述】:

我正在尝试使用 Boost (1.51) ICL 来简化一些区间搜索。

类型:

  • SequenceI::shp_set 是一个 std::set 共享指针
  • types::mz_t 是 Boost::Units 数量

interval_map<types::mz_t, SequenceI::shp_set> 是区间映射的 typedef

我有一个创建适当段的函数,然后我尝试这样做

msMap.add(segment);

然后我在编译过程中收到以下错误:

In file included from /home/adamb/Development/apollo/libapollo/include/theory.hpp:16:
In file included from /home/adamb/local/include/boost/icl/interval_map.hpp:13:
In file included from /home/adamb/local/include/boost/icl/interval_set.hpp:14:
In file included from /home/adamb/local/include/boost/icl/interval_base_set.hpp:24:
In file included from /home/adamb/local/include/boost/icl/associative_interval_container.hpp:16:
In file included from /home/adamb/local/include/boost/icl/concept/interval_set.hpp:13:
In file included from /home/adamb/local/include/boost/icl/detail/set_algo.hpp:16:
/home/adamb/local/include/boost/icl/functors.hpp:73:18: error: no viable overloaded '+='
        { object += operand; }
          ~~~~~~ ^  ~~~~~~~
/home/adamb/local/include/boost/icl/interval_base_map.hpp:855:5: note: in instantiation of member function 'boost::icl::inplace_plus<std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >,
      std::allocator<boost::shared_ptr<apollo::SequenceI> > > >::operator()' requested here
    Combiner()((*it_).second, co_val);
    ^
/home/adamb/local/include/boost/icl/interval_base_map.hpp:870:9: note: in instantiation of function template specialization
      'boost::icl::interval_base_map<boost::icl::interval_map<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, std::less, icl::inplace_plus,
      icl::inter_section, boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>, std::allocator>,
      boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension,
      boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >,
      boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, less, inplace_plus, inter_section,
      boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>,
      allocator>::add_segment<boost::icl::inplace_plus<std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > > > >' requested here
        add_segment<Combiner>(inter_val, co_val, it_);
        ^
/home/adamb/local/include/boost/icl/interval_base_map.hpp:966:9: note: in instantiation of function template specialization
      'boost::icl::interval_base_map<boost::icl::interval_map<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, std::less, icl::inplace_plus,
      icl::inter_section, boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>, std::allocator>,
      boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension,
      boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >,
      boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, less, inplace_plus, inter_section,
      boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>,
      allocator>::add_main<boost::icl::inplace_plus<std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > > > >' requested here
        add_main<Combiner>(rest_interval, co_val, it_, last_);
        ^
/home/adamb/local/include/boost/icl/interval_base_map.hpp:314:24: note: in instantiation of function template specialization
      'boost::icl::interval_base_map<boost::icl::interval_map<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, std::less, icl::inplace_plus,
      icl::inter_section, boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>, std::allocator>,
      boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension,
      boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >,
      boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, less, inplace_plus, inter_section,
      boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>,
      allocator>::_add<boost::icl::inplace_plus<std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > > > >' requested here
        this->template _add<codomain_combine>(interval_value_pair);
                       ^
/home/adamb/Development/apollo/libapollo/src/theory.cpp:205:15: note: in instantiation of member function
      'boost::icl::interval_base_map<boost::icl::interval_map<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, std::less, icl::inplace_plus,
      icl::inter_section, boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>, std::allocator>,
      boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension,
      boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >,
      boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>,
      std::set<boost::shared_ptr<apollo::SequenceI>, std::less<boost::shared_ptr<apollo::SequenceI> >, std::allocator<boost::shared_ptr<apollo::SequenceI> > >, boost::icl::partial_absorber, less, inplace_plus, inter_section,
      boost::icl::continuous_interval<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >,
      boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::dimensionless_type> > >, boost::units::heterogeneous_system<boost::units::heterogeneous_system_impl<boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::dalton_mass_base_unit,
      boost::units::static_rational<1, 1> >, boost::units::list<boost::units::heterogeneous_system_dim<apollo::units::charge_state_base_unit, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> >,
      boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1, 1> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-1, 1> >,
      boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type> > >, boost::units::dimensionless_type> >, void>, float>, less>, allocator>::add'
      requested here
        msMap.add(segment);

如果您查看"Party" code,没有什么特别的设置可以使事情正常进行。

我的愿望是有一个区间映射,我给它值,它给我一个共享指针列表(或迭代器,我不在乎),其中包含包含提供值的区间。就是这样。

如果ICL不能做到这一点,那我需要再找一个区间映射库,pronto。

【问题讨论】:

  • “段”的类型是什么?
  • segment 是:make_pair(interval<:mz_t>::closed(lowerRange,upperRange), returnSet);返回集只是一个 SequenceI::shp_set

标签: c++ dictionary boost set boost-icl


【解决方案1】:

看起来问题不在 std::set 中。可能,您使用的 boost::units 类型无法比较(无运算符 )或添加(无运算符 +=)减去运算符-=。

在我的示例中,我在 Visual Studio 2010 下编译

std::set<string*> tst;
boost::units::angle::radian_base_unit a,b;
bicl::interval_map<boost::units::angle::radian_base_unit,std::set<string*> > tst1;
tst1.add(make_pair(bicl::interval_map<boost::units::angle::radian_base_unit,std::set<string*> >::interval_type::closed(a,b),tst));

问题是a和b不能比较

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多