Boost logo

Boost :

From: Barrett Adair (barrettellisadair_at_[hidden])
Date: 2021-03-02 06:47:19


> Please provide in your review information you think is valuable to
> understand your choice to ACCEPT or REJECT including Describe as a
> Boost library. Please be explicit about your decision (ACCEPT or REJECT).

Conditionally ACCEPT.

> - What is your evaluation of the design?

I'm surprised these macros are not already in Boost? In any case, these are
nice. The library name works well with the macro interface.

I don't like that I need to call describe_members multiple times to get
static, non-static, data, and functions. I would appreciate the addition of
mod_data and mod_nonstatic to keep the flags consistent. This is my only
acceptance condition.

Other thoughts:
1.I think describe_members could use a default flags value to represent all
members.
2. I'd really like the option (but not the requirement) to provide
description comment strings.
3. I'd really like the ability to use this library with overloaded member
functions.
4. Support for member function templates might be nice. Support for class
templates would be especially nice. I realize a consistent API design for
this would be difficult, but seems like a Boost-worthy task.
5. There might be an interesting opportunity for this library to support
progressive definition/reflection of namespaces. I'd like to see an attempt.
6. I wonder if there is a nice way to avoid the empty parens when there are
no base types.
7. I wish that macros for old-style enums would have OLD in their name.

> - What is your evaluation of the implementation?

Just a couple of question marks:
* Why is "modifiers" not a C++11 enum class?
* Why does this library not use Boost.PreProcessor? I wish that it did.

> - What is your evaluation of the documentation?

* Nice docs, generous examples.
* Syntax highlighting would be nice.
* I'd like to see enum class take precedence over the old-style enums.
* I would appreciate some further reading about other library approaches
and the standardization efforts past and present.

> - What is your evaluation of the potential usefulness of the library?

It's useful. Everyone has their own worse versions of these macros.

> - Did you try to use the library? With which compiler(s)?

Yes, I poked around with the JSON RPC example using gcc 10.2.0.

> have any problems?

Nothing I haven't already mentioned.

> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

2 hours.

> - Are you knowledgeable about the problem domain?

I'm familiar with these techniques and the constraints involved. I'm not
familiar with the standardization efforts in this space, nor any of the
existing Boost efforts aside from the ADAPT_STRUCT stuff.

Thanks,
Barrett Adair


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