Hi all, I have been using multi-index with great success, but have struck a requirement that sort of fits into the remit of multi-index, but isn't catered for. Here's what I want to do (pseudocode) typedef multi_index<MyClass> MyIndex; MyIndex mi; int index_id = 0; mi.add_sorted_index( index_id++, MyIndex::sorted_index_predicate_type( &some_predicate ) ); mi.add_sorted_index( index_id++, MyIndex::sorted_index_predicate_type( &some_other_predicate ) ); So basically, add indices at runtime, to take advantage of multi_index's great features, such as projection, index updating on modification, etc. My use case, if it's relevant, is to expose multi_index behaviour on objects from a dll. Where obviously the calling module can't specify at compile time the required indices. Is this a sensible addition to multi-index, or is it best implement using other mechanisms. (Having to re-implement many of the great features of multi-index doesn't seem desireable.) Neil