Hi Michael, Thanks for the announcement ahead of time. I have found a ten-day period always to be too short for doing a review, so I appreciate any opportunity to start earlier. My question to you and peter is what exactly are we going to review. The referenced GitHub repository has at least two branches: master and develop. In case they differ, which is the one we are supposed to be reviewing. In the same vein, is the linked documentation exactly what we are going to review? Documentation is also subject to the review process. Peter mentioned he is going to change the docs so that they reflect how the never-valueless guarantee is implemented. Is that change going to be reflected in the documentation version that is going to be reviewed? Regards, &rzej; niedz., 24 mar 2019 o 22:12 Michael Caisse via Boost <boost@lists.boost.org> napisaĆ(a):
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<T...> is an almost conforming implementation of std::variant with the following differences:
* A converting constructor from, e.g. variant<int, float> to variant<float, double, int> is provided as an extension;
* The reverse operation, going from variant<float, double, int> to variant<int, float> is provided as the member function subset<U...>. (This operation can throw if the current state of the variant cannot be represented.)
* variant<T...> 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>
and the documentation here: <https://pdimov.github.io/variant2/doc/html/variant2.html>
Please take an early look at the library and ask questions now. Peter Dimov is very active on the Cpplang Slack #boost channel; however, please consider using the Boost Dev or User Mail Lists so that the entire community might benefit from your conversation.
Note: The repository contains an expected implementation also; however, that is not being considered in this review.
Thank you for your participation! michael
-- Michael Caisse Ciere Consulting ciere.com
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost