简体   繁体   中英

Boost ICL not working as expected, std::set operator+= expected

I'm trying to use Boost (1.51) ICL to simplify some interval searches.

Types:

  • SequenceI::shp_set is a std::set of shared pointers
  • types::mz_t is a Boost::Units quantity

interval_map<types::mz_t, SequenceI::shp_set> is the typedef for the interval map

I have a function that creates the appropriate segments and then I try to do

msMap.add(segment);

I then get the following error during compile:

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);

If you look at the "Party" code , nothing special is done to set to make things work.

My desire is to have an interval map where I give it values and it gives me a list (or iterator, I don't care) of shared pointers that has intervals that contain provided value. That's it.

If ICL can't do this, then I need to find another interval map library, pronto.

It looks like problem not in std::set. Probably, you are using that types of boost::units that cannot be compared (no operator <, >) or added (no operator+=) subtracted operator-=.

In my example, which I compiled under 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));

problem is that a and b cannot be compared < there is no operator<.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM