Hi,

First of all thanks very much for the ICL!

I'm using a boost::icl::interval_map with my own value type (struct V) and I have a custom value combining logic by passing boost::icl::inplace_et to the map and defining my own "operator&=" that provides the logic implementation.

Now what happens is that my map ignores "m += make_pair(..., V())" because the default-constructed value is considered neutral due to:

boost/icl/interval_base_map.hpp:

... interval_base_map<...>::_add(const segment_type& addend) {
typedef typename on_absorbtion<type,Combiner, absorbs_identities<type>::value>::type on_absorbtion_;
...
    const codomain_type& co_val = addend.second;
    if(on_absorbtion_::is_absorbable(co_val))
        return this->_map.end();

This 'if' returns without actually modifying the map. Is there some public API that I can use to tell my map that it should not consider any value 'absorbable'? And is it a good idea to change this?

Thank you,
Filip


_______________________________________________
Gecode users mailing list
users@gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users

Reply via email to