Add <variant> tests but disable them for libc++
llvm-svn: 287728
diff --git a/libcxx/test/std/utilities/variant/variant.monostate.relops/relops.pass.cpp b/libcxx/test/std/utilities/variant/variant.monostate.relops/relops.pass.cpp
new file mode 100644
index 0000000..f430a66
--- /dev/null
+++ b/libcxx/test/std/utilities/variant/variant.monostate.relops/relops.pass.cpp
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11, c++14
+
+// <variant>
+
+// constexpr bool operator<(monostate, monostate) noexcept { return false; }
+// constexpr bool operator>(monostate, monostate) noexcept { return false; }
+// constexpr bool operator<=(monostate, monostate) noexcept { return true; }
+// constexpr bool operator>=(monostate, monostate) noexcept { return true; }
+// constexpr bool operator==(monostate, monostate) noexcept { return true; }
+// constexpr bool operator!=(monostate, monostate) noexcept { return false; }
+
+#include <cassert>
+#include <type_traits>
+#include <variant>
+
+int main() {
+ using M = std::monostate;
+ constexpr M m1{};
+ constexpr M m2{};
+ {
+ static_assert((m1 < m2) == false, "");
+ static_assert(noexcept(m1 < m2), "");
+ }
+ {
+ static_assert((m1 > m2) == false, "");
+ static_assert(noexcept(m1 > m2), "");
+ }
+ {
+ static_assert((m1 <= m2) == true, "");
+ static_assert(noexcept(m1 <= m2), "");
+ }
+ {
+ static_assert((m1 >= m2) == true, "");
+ static_assert(noexcept(m1 >= m2), "");
+ }
+ {
+ static_assert((m1 == m2) == true, "");
+ static_assert(noexcept(m1 == m2), "");
+ }
+ {
+ static_assert((m1 != m2) == false, "");
+ static_assert(noexcept(m1 != m2), "");
+ }
+}