Releases: mpark/variant
v1.4.0
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
New Features
- #56: Replaced the visitation mechanism to be
switch
-based.- Blog post: Variant Visitation V2
- Thank you @quicknir for the contribution and collaboration on this effort!
- Improved visitor same return type error message:
error: static_assert failed due to requirement 'expected<int>::template but_got<double>()'
"`visit` requires the visitor to have a single return type"
- Improved visitor exhaustiveness error message:
error: static_assert failed due to requirement
'visitor<add_ints>::template does not handle<const int &, const int &>()'
"`visit` requires the visitor to be exhaustive"
Bug Fixes
v1.3.0
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
New Features
- Added support for GCC 4.8
- Lowered the minimum MSVC version from
190024215
to190024210
- #36: Significant reduction in binary size
Bug Fixes
v1.2.2
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
Bug Fixes
- Fix exception support detection on MSVC.
v1.2.1
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
Bug Fixes
- Add missing SFINAE condition for the converting constructor
- Fix an incorrect use of
__has_include
- Fix a big compile-time performance issue on GCC 4.9 and 5
v1.2.0
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
New Features
- Support for GCC 4.9 (no
constexpr
support forvisit
and relational operators) - Support for
-fno-exceptions
- Support for
#include
ofmpark/variant.hpp
without the-I
flag - Single header versions of
mpark/variant.hpp
hosted on the single-header branch - Support for
try it | on godbolt
- Increase warning levels
Bug Fixes
- LWG2904: "Make
variant
move-assignment more exception safe."
v1.1.0
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++'s std::variant
test suite.
New Features
- Support for C++11
- Support for MSVC 2015 / 2017
Bug Fixes
- LWG2857: "{
variant
,optional
,any
}::emplace
should return the constructed value" - Implement P0513: "Poisoning the Hash"
- Implement P0599: "
noexcept
for Hash functions" - llvm.org/PR31916: "
std::visit
does not accept visitors which require non-const
lvalue references" - llvm.org/PR33000: "
std::visit
with zero variants is broken"
v1.0.1
MPark.Variant is an implementation of C++17 std::variant
as a C++14 library.
The implementation is based on my implementation of std::variant
for libc++ and is continuously tested against libc++ std::variant
test suite.
Bug Fixes
- LWG2857: "{
variant
,optional
,any
}::emplace
should return the constructed value" - Implement P0513: "Poisoning the Hash"
- Implement P0599: "
noexcept
for Hash functions" - llvm.org/PR31916: "
std::visit
does not accept visitors which require non-const
lvalue references" - llvm.org/PR33000: "
std::visit
with zero variants is broken"