[Boost-users] [review][variant2] Variant2 Review Starts April 1

59 views
Skip to first unread message

Michael Caisse via Boost-users

unread,
Mar 24, 2019, 5:11:59 PM3/24/19
to boost...@lists.boost.org, Michael Caisse
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
--
Michael Caisse
Ciere Consulting
ciere.com
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply all
Reply to author
Forward
0 new messages