Boost logo

Boost :

Subject: Re: [boost] [review][mp11] Reminder of ongoing formal review
From: Jason Rice (ricejasonf_at_[hidden])
Date: 2017-07-22 19:02:13


Hello, my name is Jason Rice, and this is my first Boost review so please
take that into consideration. I'm also new to this mailing list thing so
let me know if I did something wrong here.

Please consider the following review for the proposed Boost.Mp11 library:

1. Should Mp11 be accepted into Boost? Please state all conditions
   for acceptance explicity.

  ACCEPT. No conditions

2. What is your evaluation of the design?

  The interface is very straight forward.
  It is mostly templates but the user is not burdened with accessing a
nested "type" with every metafunction.
  The list algorithms are flexible in that they take any kind of list which
is very handy.
  I did notice that the user is burdened with ensuring that a list is not
const or they will just get a "implicit instantiation of undefined
template" error which doesn't really point to the problem.
  (e.g. when using mp_append with many lists)

  The `mp_` prefix is welcome if this is destined for the `std` namespace.
  The `tuple_apply` could probably just be called `apply` since appears to
be a shim of `std::apply`.
  The interface of map functions accepting any list of list is very nice.

3. What is your evaluation of the implementation?

  The implementation is very clean. I looked at `mp_map_find_impl` and it
is very concise and easy to understand.
  I did find it annoying though that some of the public facing functions
are defined inside detail files which makes the source code a little more
difficult to traverse.
  I'd like to see mp_product perform on par with the other libs on
metaben.ch

4. What is your evaluation of the documentation?

  For the interface, it gets the job done.
  The table of contents has some text wrapping that could be fixed.
  There is no instructions for installation that I could find anywhere.
  It fails to mention that Boost.Config is a dependency. (AFAICT)

5. What is your evaluation of the potential usefulness of the library?

  I use Boost.Hana quite a bit. I'm currently using a library like this to
help where optimization for compile-time performance is needed so it is
definitely useful.

6. Did you try to use the library? With what compiler? Did you have
   any problems?

  I used it in my library Nbdl to augment my use of Boost.Hana in a couple
of places.
  The compiler is a recent pull of the Emscripten fork of clang targeting
X86.
  I did get stuck for a while on a weird error I mentioned before because a
used a const list.
  I didn't like having to also install Boost.Config. (I'm not using the
Boost monolith build)

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

  I spent a few hours on it.
  I used mp_append and mp_with_index in my lib with great results.
  I just looked at the implementation of mp_map_find.
  I scoured the documentation looking for stuff and seeing what else was
available.

8. Are you knowledgeable about the problem domain?

  Yes, I have done TMP and I am also a contributor to Boost.Hana.

Jason Rice


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