////
Copyright 2019-2025 Peter Dimov
Distributed under the Boost Software License, Version 1.0.
https://www.boost.org/LICENSE_1_0.txt
////

[#changelog]
# Revision History
:idprefix: changelog_

## Changes in 1.91.0

* `holds_alternative<T>` and `get<T>` have been relaxed to no longer require `T` to occur exactly once in the list of alternatives. It now must occur at least once.

## Changes in 1.90.0

* More functions have been marked as `constexpr`, including `~variant`.
  This didn't matter before {cpp}20, but does now.

## Changes in 1.88.0

* Use the smallest appropriate unsigned type for the index.

## Changes in 1.83.0

* Added `uses_double_storage()`.

## Changes in 1.81.0

* Added support for `boost::json::value_from` and `boost::json::value_to`.

## Changes in 1.79.0

* Added `operator<<` for `monostate`.

## Changes in 1.78.0

* Added `<boost/variant2.hpp>`.
* Added `unsafe_get<I>`.
* Added `visit_by_index`.
* Added `operator<<`.

## Changes in 1.76.0

* Improved generated code for the double buffered case.

## Changes in 1.74.0

* Added support for derived types in `visit`
* Improved compilation performance for many (hundreds of) alternatives.
* Added support for `visit<R>`

## Changes in 1.73.0

* Added support for `std::hash`, `boost::hash`.
* `variant<T...>` is now trivial when all types in `T...` are trivial.
  This improves performance by enabling it to be passed to, and returned
  from, functions in registers.

## Changes in 1.71.0

After the Boost formal review, the implementation has been
changed to provide the strong exception safety guarantee,
instead of basic. `expected` has been removed.
