
- What is your evaluation of the design?
Good
- What is your evaluation of the implementation?
Good
- What is your evaluation of the documentation?
Insufficient I had some initial problems with following the example in the docs, as it has bugs. But after that was cleared up by Daniel I was able to play around with what the library can do. There are some things that the documentation is lacking: a) A reference section describing what the types are and what operations are possible. If it wasn't for Daniel responding that there was an operator, present it would have taken a close look at the source to figure out it was and how it could be used. b) Coverage of some alternate ways to use the library. For example... For me I don't really care about providing a positional interface when the named interface is available. But I do care about not having the implementation visible, and get duplicated for each argument ordering. So I would not use the forwarding functions as given. Instead I would use the named params interface as the forwarding layer. Hence the example that I would find useful would go something like: #include <iostream> void foo(const char * name, float value) { std::cout << name << " = " << value << "\n"; } #include <boost/named_params.hpp> struct name_t; // tag types struct value_t; namespace { boost::keyword<name_t> name; // keyword objects boost::keyword<value_t> value; } template<class Params> inline void foo(const Params& params) { foo(params[name],params[value]); } int main() { foo((name = "bar", value = 3.14f)); foo((value = 5.2f, name = "baz")); return 0; } c) Mention of the drawback of the larger number of function definitions that the library will create. And approach as to minimizing the code size impact. Hence my example in (b) of forwarding to a classic function which has the single real implementation.
- What is your evaluation of the potential usefulness of the library?
High This is functionality that I've been waiting for since growing up using Amiga TAGARGS. The use of this library has the potential to drive changes to C++ to support named args in a nicer way, which is what's really needed.
- Did you try to use the library?? With what compiler?? Did you have any problems?
Yes, with CW83 and VC71. Only problem was with the broken example.
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
Somewhere in the close study, but not near in-depth study.
- Are you knowledgeable about the problem domain?
Yes. Have used named args of one sort of other for many years, and implemented some in the past.
As always, please remember to clearly state whether you believe the library should be accepted into Boost.
YES. (Assuming the documentation will improve in the future) -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq