summaryrefslogtreecommitdiffstats
path: root/libcxx/test
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-10-14 07:19:52 +0000
committerEric Fiselier <eric@efcs.ca>2016-10-14 07:19:52 +0000
commit498ee00a3af1ba1490b6bd8fe89dfa4fc67f1601 (patch)
tree2c2368eb75a3be3a72aa68c586c8e46e87fa6697 /libcxx/test
parentffb602125aa1b400a27f39870ea56ca00ff4fa94 (diff)
downloadbcm5719-llvm-498ee00a3af1ba1490b6bd8fe89dfa4fc67f1601.tar.gz
bcm5719-llvm-498ee00a3af1ba1490b6bd8fe89dfa4fc67f1601.zip
Add void_t and invoke feature test macros
llvm-svn: 284209
Diffstat (limited to 'libcxx/test')
-rw-r--r--libcxx/test/std/utilities/function.objects/func.invoke/invoke_feature_test_macro.pass.cpp39
-rw-r--r--libcxx/test/std/utilities/meta/meta.unary.prop.query/void_t_feature_test_macro.pass.cpp36
2 files changed, 75 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/function.objects/func.invoke/invoke_feature_test_macro.pass.cpp b/libcxx/test/std/utilities/function.objects/func.invoke/invoke_feature_test_macro.pass.cpp
new file mode 100644
index 00000000000..aaac98474fc
--- /dev/null
+++ b/libcxx/test/std/utilities/function.objects/func.invoke/invoke_feature_test_macro.pass.cpp
@@ -0,0 +1,39 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// <functional>
+
+// template <class F, class ...Args>
+// result_of_t<F&&(Args&&...)> invoke(F&&, Args&&...);
+
+#include <functional>
+#include <cassert>
+
+#include "test_macros.h"
+
+#if TEST_STD_VER <= 14
+# ifdef __cpp_lib_invoke
+# error Feature test macro should be defined
+# endif
+#else
+# ifndef __cpp_lib_invoke
+# error Feature test macro not defined
+# endif
+# if __cpp_lib_invoke != 201411
+# error __cpp_lib_invoke has the wrong value
+# endif
+#endif
+
+int foo(int) { return 42; }
+
+int main() {
+#if defined(__cpp_lib_invoke)
+ assert(std::invoke(foo, 101) == 42);
+#endif
+} \ No newline at end of file
diff --git a/libcxx/test/std/utilities/meta/meta.unary.prop.query/void_t_feature_test_macro.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary.prop.query/void_t_feature_test_macro.pass.cpp
new file mode 100644
index 00000000000..f188c098c03
--- /dev/null
+++ b/libcxx/test/std/utilities/meta/meta.unary.prop.query/void_t_feature_test_macro.pass.cpp
@@ -0,0 +1,36 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// type_traits
+
+// void_t
+
+#include <type_traits>
+
+#include "test_macros.h"
+
+#if TEST_STD_VER <= 14
+# ifdef __cpp_lib_void_t
+# error Feature test macro should not be defined!
+# endif
+#else
+# ifndef __cpp_lib_void_t
+# error Feature test macro is not defined
+# endif
+# if __cpp_lib_void_t != 201411
+# error Feature test macro has the wrong value
+# endif
+#endif
+
+int main()
+{
+#if defined(__cpp_lib_void_t)
+ static_assert(std::is_same_v<std::void_t<int>, void>, "");
+#endif
+}
OpenPOWER on IntegriCloud