
Thorsten Ottosen wrote:
Here's a list of things I feel strongly about changing (see below for info):
- relation should have the same members as std::pair
Maybe, I quite like the systematic use of left and right personally.
- types should lie with members, so
map::left_type::iterator i = m.left.begin()
instead of
map::left_iterator i = m.left.begin()
Isn't that true now? Or rather that both are possible currently? My only comment is that it's a lot easier to write: typedef typename map::left_iterator it_type; than: typedef typename map::left_type left_type; typedef typename left_type::iterator it_type; So I would go with both.
- operator()[] seems way to complicatedly specified and does not follow the promise of mirroring STL. Keep the mutable operator()[] and then add
value& map.at( const key& ); const value& map.at( const key& ) const;
which throws on lookup failure.
I found that section confusing as well, anything simpler would be welcome. John.