[libc++] Fixes generated output CI job.
authorMark de Wever <koraq@xs4all.nl>
Sat, 3 Sep 2022 08:04:44 +0000 (10:04 +0200)
committerMark de Wever <koraq@xs4all.nl>
Sat, 3 Sep 2022 08:04:44 +0000 (10:04 +0200)
libcxx/test/std/utilities/utility/forward_like/forward_like.msvc/test.cpp

index f010e7c..40aabe3 100644 (file)
-// Copyright (c) Microsoft Corporation.\r
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception\r
-\r
-#include <cassert>\r
-#include <type_traits>\r
-#include <utility>\r
-\r
-using namespace std;\r
-\r
-struct U {}; // class type so const-qualification is not stripped from a prvalue\r
-using CU = const U;\r
-using T  = int;\r
-using CT = const T;\r
-\r
-U u{};\r
-const U& cu = u;\r
-\r
-static_assert(is_same_v<decltype(forward_like<T>(U{})), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T>(CU{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<T>(u)), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T>(cu)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<T>(std::move(u))), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T>(std::move(cu))), CU&&>);\r
-\r
-static_assert(is_same_v<decltype(forward_like<CT>(U{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT>(CU{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT>(u)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT>(cu)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT>(std::move(u))), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT>(std::move(cu))), CU&&>);\r
-\r
-static_assert(is_same_v<decltype(forward_like<T&>(U{})), U&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(CU{})), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(u)), U&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(cu)), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(std::move(u))), U&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(std::move(cu))), CU&>);\r
-\r
-static_assert(is_same_v<decltype(forward_like<CT&>(U{})), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(CU{})), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(u)), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(cu)), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(std::move(u))), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(std::move(cu))), CU&>);\r
-\r
-static_assert(is_same_v<decltype(forward_like<T&&>(U{})), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(CU{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(u)), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(cu)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(std::move(u))), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(std::move(cu))), CU&&>);\r
-\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(U{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(CU{})), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(u)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(cu)), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(std::move(u))), CU&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(std::move(cu))), CU&&>);\r
-\r
-static_assert(noexcept(forward_like<T>(u)));\r
-\r
-static_assert(is_same_v<decltype(forward_like<U&>(u)), U&>);\r
-static_assert(is_same_v<decltype(forward_like<CU&>(cu)), CU&>);\r
-static_assert(is_same_v<decltype(forward_like<U&&>(std::move(u))), U&&>);\r
-static_assert(is_same_v<decltype(forward_like<CU&&>(std::move(cu))), CU&&>);\r
-\r
-struct NoCtorCopyMove {\r
-  NoCtorCopyMove() = delete;\r
-  NoCtorCopyMove(const NoCtorCopyMove&) = delete;\r
-  NoCtorCopyMove(NoCtorCopyMove&&) = delete;\r
-};\r
-\r
-static_assert(is_same_v<decltype(forward_like<CT&&>(declval<NoCtorCopyMove>())), const NoCtorCopyMove&&>);\r
-static_assert(is_same_v<decltype(forward_like<CT&>(declval<NoCtorCopyMove>())), const NoCtorCopyMove&>);\r
-static_assert(is_same_v<decltype(forward_like<T&&>(declval<NoCtorCopyMove>())), NoCtorCopyMove&&>);\r
-static_assert(is_same_v<decltype(forward_like<T&>(declval<NoCtorCopyMove>())), NoCtorCopyMove&>);\r
-\r
-static_assert(noexcept(forward_like<T>(declval<NoCtorCopyMove>())));\r
-\r
-constexpr bool test() {\r
-  {\r
-    int val       = 1729;\r
-    auto&& result = forward_like<const double&>(val);\r
-    static_assert(is_same_v<decltype(result), const int&>);\r
-    assert(&result == &val);\r
-  }\r
-  {\r
-    int val       = 1729;\r
-    auto&& result = forward_like<double&>(val);\r
-    static_assert(is_same_v<decltype(result), int&>);\r
-    assert(&result == &val);\r
-  }\r
-  {\r
-    int val       = 1729;\r
-    auto&& result = forward_like<const double&&>(val);\r
-    static_assert(is_same_v<decltype(result), const int&&>);\r
-    assert(&result == &val);\r
-  }\r
-  {\r
-    int val       = 1729;\r
-    auto&& result = forward_like<double&&>(val);\r
-    static_assert(is_same_v<decltype(result), int&&>);\r
-    assert(&result == &val);\r
-  }\r
-  return true;\r
-}\r
-\r
-int main() {\r
-  assert(test());\r
-  static_assert(test());\r
-}\r
+// Copyright (c) Microsoft Corporation.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#include <cassert>
+#include <type_traits>
+#include <utility>
+
+using namespace std;
+
+struct U {}; // class type so const-qualification is not stripped from a prvalue
+using CU = const U;
+using T  = int;
+using CT = const T;
+
+U u{};
+const U& cu = u;
+
+static_assert(is_same_v<decltype(forward_like<T>(U{})), U&&>);
+static_assert(is_same_v<decltype(forward_like<T>(CU{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<T>(u)), U&&>);
+static_assert(is_same_v<decltype(forward_like<T>(cu)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<T>(std::move(u))), U&&>);
+static_assert(is_same_v<decltype(forward_like<T>(std::move(cu))), CU&&>);
+
+static_assert(is_same_v<decltype(forward_like<CT>(U{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT>(CU{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT>(u)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT>(cu)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT>(std::move(u))), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT>(std::move(cu))), CU&&>);
+
+static_assert(is_same_v<decltype(forward_like<T&>(U{})), U&>);
+static_assert(is_same_v<decltype(forward_like<T&>(CU{})), CU&>);
+static_assert(is_same_v<decltype(forward_like<T&>(u)), U&>);
+static_assert(is_same_v<decltype(forward_like<T&>(cu)), CU&>);
+static_assert(is_same_v<decltype(forward_like<T&>(std::move(u))), U&>);
+static_assert(is_same_v<decltype(forward_like<T&>(std::move(cu))), CU&>);
+
+static_assert(is_same_v<decltype(forward_like<CT&>(U{})), CU&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(CU{})), CU&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(u)), CU&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(cu)), CU&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(std::move(u))), CU&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(std::move(cu))), CU&>);
+
+static_assert(is_same_v<decltype(forward_like<T&&>(U{})), U&&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(CU{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(u)), U&&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(cu)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(std::move(u))), U&&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(std::move(cu))), CU&&>);
+
+static_assert(is_same_v<decltype(forward_like<CT&&>(U{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT&&>(CU{})), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT&&>(u)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT&&>(cu)), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT&&>(std::move(u))), CU&&>);
+static_assert(is_same_v<decltype(forward_like<CT&&>(std::move(cu))), CU&&>);
+
+static_assert(noexcept(forward_like<T>(u)));
+
+static_assert(is_same_v<decltype(forward_like<U&>(u)), U&>);
+static_assert(is_same_v<decltype(forward_like<CU&>(cu)), CU&>);
+static_assert(is_same_v<decltype(forward_like<U&&>(std::move(u))), U&&>);
+static_assert(is_same_v<decltype(forward_like<CU&&>(std::move(cu))), CU&&>);
+
+struct NoCtorCopyMove {
+  NoCtorCopyMove() = delete;
+  NoCtorCopyMove(const NoCtorCopyMove&) = delete;
+  NoCtorCopyMove(NoCtorCopyMove&&) = delete;
+};
+
+static_assert(is_same_v<decltype(forward_like<CT&&>(declval<NoCtorCopyMove>())), const NoCtorCopyMove&&>);
+static_assert(is_same_v<decltype(forward_like<CT&>(declval<NoCtorCopyMove>())), const NoCtorCopyMove&>);
+static_assert(is_same_v<decltype(forward_like<T&&>(declval<NoCtorCopyMove>())), NoCtorCopyMove&&>);
+static_assert(is_same_v<decltype(forward_like<T&>(declval<NoCtorCopyMove>())), NoCtorCopyMove&>);
+
+static_assert(noexcept(forward_like<T>(declval<NoCtorCopyMove>())));
+
+constexpr bool test() {
+  {
+    int val       = 1729;
+    auto&& result = forward_like<const double&>(val);
+    static_assert(is_same_v<decltype(result), const int&>);
+    assert(&result == &val);
+  }
+  {
+    int val       = 1729;
+    auto&& result = forward_like<double&>(val);
+    static_assert(is_same_v<decltype(result), int&>);
+    assert(&result == &val);
+  }
+  {
+    int val       = 1729;
+    auto&& result = forward_like<const double&&>(val);
+    static_assert(is_same_v<decltype(result), const int&&>);
+    assert(&result == &val);
+  }
+  {
+    int val       = 1729;
+    auto&& result = forward_like<double&&>(val);
+    static_assert(is_same_v<decltype(result), int&&>);
+    assert(&result == &val);
+  }
+  return true;
+}
+
+int main() {
+  assert(test());
+  static_assert(test());
+}