I'm new to ICL and have a few questions and a problem.
Here is my test code which demonstrated (Windows, MSVC 2012):
// "icl_question.cpp"

#include "precomp.hpp"
#include <iostream>
#include <utility>
#include <functional>
#include <boost/cstdint.hpp>
#include <boost/icl/closed_interval.hpp>
#include <boost/icl/interval_map.hpp>

typedef boost::icl::closed_interval<boost::uint16_t> interval_t;

// Based on the in "boost/icl/functors.hpp".
template <typename Type> struct inplace_assign
    : public boost::icl::identity_based_inplace_combine<Type>
{
    typedef inplace_assign<Type> type;

    void operator()(Type& object, const Type& operand) const
    {
        object = operand;
    }
};

// Why is the 7 template parameter not a template template parameter?
// The code in "boost/icl/detail/design_config.hpp" does not define the
// ICL_USE_INTERVAL_TEMPLATE_TYPE macro (I assume intentionally) which, if
// defined, would make it so.
typedef boost::icl::interval_map
                        <
                        boost::uint16_t,
                        const char*,
                        boost::icl::partial_absorber,
                        std::less,
                        inplace_assign,
                        boost::icl::inter_section,
                        interval_t
                        > map_t;

int main(int argc, char *argv[])
{
    using namespace std;

    map_t mem;
    // The commented line two down is what I intend, but it asserts at runtime.
    // This one works.
    mem += make_pair(interval_t(0, 0xfffe), "RAM");
    //mem += make_pair(interval_t(0, 0xffff), "RAM");
    mem += make_pair(interval_t(0xa000, 0xbfff), "Basic ROM");

    cout << hex << mem << endl;

    return 0;
}

The first question is about the aggregate on collision functionality. I would just like to replace. I have implemented inplace_assign which does this but it seems strange that this isn't included. Am I missing something here (I fear I may well be)?

The second question is why interval_map's 7th template parameter (Interval) is not a template template parameter. The code in "boost/icl/detail/design_config.hpp" does not define the ICL_USE_INTERVAL_TEMPLATE_TYPE macro (I assume intentionally) which, if defined, would make it so.

The third question is about a runtime error I'm getting in the above code. The comment in main shows the scenario. Basically if I use 0xffff as the end of the first range I get an ASSERT at runtime whereas 0xfffe works fine.

Finally, the documentation seems a little sparse on the function of the Section template parameter. Any clarification on that would be appreciated.