Boost logo

Boost Users :

Subject: [Boost-users] [variant2] Review of Variant2 started today : April 1 - April 10
From: Michael Caisse (mcaisse-lists_at_[hidden])
Date: 2019-04-02 05:26:47

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

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:

The master branch will be stable for the review:

Find the documentation here (also stable during the review):

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: <>

Thank you for your effort in the Boost community.

Happy coding -

Michael Caisse
Ciere Consulting

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at