Firstly, I think the bimap library is great.
 
What would suit my situation is to use a container type of relation that allowed storage of some information with each relationship.
 
Effectively: map_of_relation< UserDefineValueType, KeyComp > (and related multimap, unordered_map, etc).
 
As a usage example, in database terms, TableA references TableB.
 
Attached to the TableA->TableB relationship, would be a bimap of rows in TableA that reference rows in TableB.
 
So...
 
typedef
bimap<
  set_of<Rows:iterator>,
  set_of<Rows:iterator>,
  map_of< RelationshipDescription >
> RowRelationships;
 
typedef bimap<
  multiset_of<Table::Ptr>,
  multiset_of<Table::Ptr>,
  map_of_relation< shared_ptr<RowRelationships> >
> TableRelationships;
 
Is this easy to add with the current bimap architecture?
 
Neil