Edward Diener writes: > "Anthony Williams" <[EMAIL PROTECTED]> wrote in > message news:15826.2782.569000.619636@;gargle.gargle.HOWL... > > Edward Diener writes: > > > Finally I would like a non-partisan answer from you to my next question > and > > > I am perfectly willing to be wrong and accept the fact that my lack of > > > understanding of "concept" based explanations are at fault. Do you feel > that > > > the answers to my 2 questions are readily apparent to most intelligent > C++ > > > programmers from reading the property map docs ? > > > > As Jan Langer pointed out, there are specific pages for each of the > property > > map categories. If you missed these you will have difficulty piecing > > everything together. > > No, I saw them from the beginning. I just didn't ( and still don't ) > understand how they fit in with some sort of global get(), put(), and > operator[] template functions.
operator[] has to be a member function if it exists at all, unless the built-in operator[] is sufficient. get() and put() may or may not be global, and may or may not be templates. They must be implemented for each property map so that the expressions get(property_map,key_value) and put(property_map,key_value,new_value) compile and work OK. This means that they may be global, or they may be in an associated namespace of the property map or key value types, and found by ADL. The parameter types may or may not exactly match the types of the property map etc., provided that the functions can be found, and the supplied arguments can be converted to the required parameter types --- e.g. if the property map is actually a pointer to X, then the real parameter for get() could be a pointer to Y, if Y is an unambiguous public base of X --- and provided that overload resolution finds the correct function. I would expect in the common case, that the get() and put() functions are supplied in the same namespace as a property map type, and the parameter types exactly match the types of the property map and key value, give or take a const&, but this is not necessarily the case. The presence of a template get() will probably be an impediment if the parameters are not an exact match for the supplied types, since deduced template parameters have a nasty tendency to exactly match the supplied arguments, and may therefore be picked in preference, or cause an ambiguity. Anthony -- Anthony Williams Senior Software Engineer, Beran Instruments Ltd. Remove NOSPAM when replying, for timely response. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost