From fb3ce863ff3679390efb5667499097d5edb45fb2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 8 Mar 2021 03:26:40 +0200 Subject: [PATCH] Add MSVC workaround for monospace constexpr (refs #25) --- include/boost/variant2/variant.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index f46fdb4..06a0419 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -81,6 +81,8 @@ struct monostate { }; +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1940) + constexpr bool operator<(monostate, monostate) noexcept { return false; } constexpr bool operator>(monostate, monostate) noexcept { return false; } constexpr bool operator<=(monostate, monostate) noexcept { return true; } @@ -88,6 +90,17 @@ constexpr bool operator>=(monostate, monostate) noexcept { return true; } constexpr bool operator==(monostate, monostate) noexcept { return true; } constexpr bool operator!=(monostate, monostate) noexcept { return false; } +#else + +constexpr bool operator<(monostate const&, monostate const&) noexcept { return false; } +constexpr bool operator>(monostate const&, monostate const&) noexcept { return false; } +constexpr bool operator<=(monostate const&, monostate const&) noexcept { return true; } +constexpr bool operator>=(monostate const&, monostate const&) noexcept { return true; } +constexpr bool operator==(monostate const&, monostate const&) noexcept { return true; } +constexpr bool operator!=(monostate const&, monostate const&) noexcept { return false; } + +#endif + // variant forward declaration template class variant;