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