Hi Beman, ----- Mensaje Original ----- [...] > * The "multiindex_set" name seems awkward to me. Maybe > "indexed_set" or > "set_index"?
I don't like the name either, and would be happy if someone comes with something better. Nevertheless, I don't think indexed_set is a good choice: when picking up a name another one must be chosen for the associated namespace (and it is convenient that these two are not the same, for reasons explained vg in Boost.Tuple docs). I chose multiindex_set/multiindex. The analogous indexed_set/index does not fit: index is too broad a denomination for the namespace. A related question: Should boost::multiindex::multiindex_set be raised into Boost namespace as boost::multiindex_set (or whatever its final name)? Seems the standard practice, but I think it is safer to ask first. > > * It seems safer to me for the default to be indexes that are unique. > > * Separating the specification of uniqueness from the list of > indices > seems like a recipe for mistakes, particularly during maintenance. > Is it > possible to combine uniqueness specification with the index tuple? > Perhaps > your example could look like this: > > typedef boost::multiindex::multiindex_set< > employee, > boost::tuple< employee::comp_id, > multi< employee::comp_name >, > employee_name::comp_ssnumber >, > > employee_set; > > or this: > > typedef boost::multiindex::multiindex_set< > employee, > boost::tuple< unique< employee::comp_id >, > non_unique< employee::comp_name >, > unique< employee_name::comp_ssnumber > >, > > employee_set; > This is definitely a good idea, Fernando also hinted at symplifing the specification of unique/non-unique indices. Any suggestion on how to implement it? With two templates for unique and non-unique indices the thing is simple; it is not as simple when only one class is marked. Suggestions here are most welcome. [...] > * It isn't clear (or I missed it) if iterators are always > logically > const-iterators or not. In other words, could your example have > been > written like this? > > typedef index_type<employee_set,1>::type employee_set_by_name; > employee_set_by_name& i=es.get<1>(); > > employee_set_by_name::iterator it=i.find("Anna Jones"); > it->name="Anna Smith"; //she just got married to Calvin Smith > No it couldn't. Iterators and const_iterators (which incidentally are the same) behave logically as const-iterators, just the same as in STL sets. update() has been carefully crafted so that strong exception-safety is provided: for that, it is necessary that a copy of the element is provided instead of allowing some sort of in-place modification of the element. This is discussed in some detail with Fernando somewhere up this thread. > Anyhow, I'm glad to see you working on this, and hope you will > continue > with it. > Thanks for your interest. If no objection is raised I plan to submit the library for pre-formal review in a couple of weeks. Regards, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost