The Boost formal review of Peter Dimov's Variant2 library will take
place April 1 - 10, 2019.
Please consider participating in this review. The success of Boost is
partially a result of the quality review process which is conducted by
the community. You are part of the Boost community. I will be grateful
to receive a review based on whatever level of effort or time you can
devote.
Variant2 is a never-valueless C++11/14/17 implementation of std::variant.
From the README:
The class boost::variant2::variant is an almost conforming
implementation of std::variant with the following differences:
* A converting constructor from, e.g. variant to
variant is provided as an extension;
* The reverse operation, going from variant to
variant is provided as the member function
subset. (This operation can throw if the current state of the
variant cannot be represented.)
* variant is not trivial when all contained types are trivial.
To avoid going into a valueless-by-exception state, this
implementation falls back to using double storage unless
* one of the alternatives is the type monostate,
* one of the alternatives has a nonthrowing default constructor, or
* all the contained types are nothrow move constructible.
If the first two bullets don't hold, but the third does, the variant
uses single storage, but emplace constructs a temporary and moves it
into place if the construction of the object can throw. In case this
is undesirable, one can force emplace into always constructing in-
place by adding monostate as one of the alternatives.
You can find the source code here:
https://github.com/pdimov/variant2
The master branch will be stable for the review:
https://github.com/pdimov/variant2/tree/master
Find the documentation here (also stable during the review):
https://pdimov.github.io/variant2/doc/html/variant2.html
Note: The repository contains an expected implementation also; however,
that is not being considered in this review.
Please provide in your review information you think is valuable to
understand your choice to ACCEPT or REJECT including Variant2 as a
Boost library. Please be explicit about your decision (ACCEPT or REJECT).
Some other questions you might want to consider answering:
- What is your evaluation of the design?
- What is your evaluation of the implementation?
- What is your evaluation of the documentation?
- What is your evaluation of the potential usefulness of the library?
- Did you try to use the library? With which compiler(s)? Did you
have any problems?
- How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?
- Are you knowledgeable about the problem domain?
More information about the Boost Formal Review Process can be found
here: http://www.boost.org/community/reviews.html
Thank you for your effort in the Boost community.
Happy coding -
michael
--
Michael Caisse
Ciere Consulting
ciere.com