Skip to content

Releases: mpark/variant

v1.4.0

15 Jan 11:29
4988879
Compare
Choose a tag to compare

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.
  • 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

  • Relational operators must return a type implicitly convertible to bool.
  • #34: Support for pointers to incomplete types
  • #41: Crash under MSVC (VS 2015 update 3)
  • Visual Studio 2017 related issues:
    • #48: Fails to compile with MSVC 19.15
    • #49: Disable MPARK_CPP14_CONSTEXPR for MSVC <= 19.15
    • #55: Compilation failed in Visual Studio 2017
    • #57: Use constexpr compiler bug workaround for VS2017 version 15.9

v1.3.0

12 Dec 15:19
2931971
Compare
Choose a tag to compare

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 to 190024210
  • #36: Significant reduction in binary size

Bug Fixes

  • #34: "Support for pointers to incomplete types"
  • #35, #38: Fixed regression in MSVC 19.12.

v1.2.2

14 Sep 03:00
5df16a3
Compare
Choose a tag to compare

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

06 Sep 07:50
d68986d
Compare
Choose a tag to compare

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

08 Jun 01:16
47a037f
Compare
Choose a tag to compare

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 for visit and relational operators)
  • Support for -fno-exceptions
  • Support for #include of mpark/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

12 May 13:01
e1ddb34
Compare
Choose a tag to compare

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

12 May 16:57
5ef4867
Compare
Choose a tag to compare

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"

v1.0.0

17 Jan 07:08
Compare
Choose a tag to compare

MPark.Variant is an implementation of C++17 std::variant as of N4618 as a standalone 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.