Boost logo

Boost :

From: Rene Rivera (grafik.list_at_[hidden])
Date: 2004-11-15 13:14:56


> - 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk