summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/std')
-rw-r--r--libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp24
-rw-r--r--libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp14
2 files changed, 37 insertions, 1 deletions
diff --git a/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp b/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp
index 24231526b2b..69e805d1e1f 100644
--- a/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp
+++ b/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp
@@ -104,36 +104,43 @@ int main()
test_result_of<S const volatile&(unsigned char, int&), double const volatile&> ();
}
{ // pointer to function
- typedef bool (&RF0)();
+ typedef bool (&RF0)();
typedef bool* (&RF1)(int);
typedef bool& (&RF2)(int, int);
typedef bool const& (&RF3)(int, int, int);
+ typedef bool (&RF4)(int, ...);
typedef bool (*PF0)();
typedef bool* (*PF1)(int);
typedef bool& (*PF2)(int, int);
typedef bool const& (*PF3)(int, int, int);
+ typedef bool (*PF4)(int, ...);
typedef bool (*&PRF0)();
typedef bool* (*&PRF1)(int);
typedef bool& (*&PRF2)(int, int);
typedef bool const& (*&PRF3)(int, int, int);
+ typedef bool (*&PRF4)(int, ...);
test_result_of<RF0(), bool>();
test_result_of<RF1(int), bool*>();
test_result_of<RF2(int, long), bool&>();
test_result_of<RF3(int, long, int), bool const&>();
+ test_result_of<RF4(int, float, void*), bool>();
test_result_of<PF0(), bool>();
test_result_of<PF1(int), bool*>();
test_result_of<PF2(int, long), bool&>();
test_result_of<PF3(int, long, int), bool const&>();
+ test_result_of<PF4(int, float, void*), bool>();
test_result_of<PRF0(), bool>();
test_result_of<PRF1(int), bool*>();
test_result_of<PRF2(int, long), bool&>();
test_result_of<PRF3(int, long, int), bool const&>();
+ test_result_of<PRF4(int, float, void*), bool>();
}
{ // pointer to member function
typedef int (S::*PMS0)();
typedef int* (S::*PMS1)(long);
typedef int& (S::*PMS2)(long, int);
+ typedef const int& (S::*PMS3)(int, ...);
test_result_of<PMS0( S), int> ();
test_result_of<PMS0( S&), int> ();
test_result_of<PMS0( S*), int> ();
@@ -193,9 +200,13 @@ int main()
test_no_result<PMS2(std::reference_wrapper<ND>, int, int)>();
test_no_result<PMS2(std::unique_ptr<ND>, int, int)>();
+ test_result_of<PMS3(S&, int), const int &>();
+ test_result_of<PMS3(S&, int, long), const int &>();
+
typedef int (S::*PMS0C)() const;
typedef int* (S::*PMS1C)(long) const;
typedef int& (S::*PMS2C)(long, int) const;
+ typedef const int& (S::*PMS3C)(int, ...) const;
test_result_of<PMS0C( S), int> ();
test_result_of<PMS0C( S&), int> ();
test_result_of<PMS0C(const S&), int> ();
@@ -238,9 +249,13 @@ int main()
test_no_result<PMS2C(volatile S&, int, int)>();
test_no_result<PMS2C(const volatile S&, int, int)>();
+ test_result_of<PMS3C(S&, int), const int &>();
+ test_result_of<PMS3C(S&, int, long), const int &>();
+
typedef int (S::*PMS0V)() volatile;
typedef int* (S::*PMS1V)(long) volatile;
typedef int& (S::*PMS2V)(long, int) volatile;
+ typedef const int& (S::*PMS3V)(int, ...) volatile;
test_result_of<PMS0V( S), int> ();
test_result_of<PMS0V( S&), int> ();
test_result_of<PMS0V(volatile S&), int> ();
@@ -274,9 +289,13 @@ int main()
test_no_result<PMS2V(const S&, int, int)>();
test_no_result<PMS2V(const volatile S&, int, int)>();
+ test_result_of<PMS3V(S&, int), const int &>();
+ test_result_of<PMS3V(S&, int, long), const int &>();
+
typedef int (S::*PMS0CV)() const volatile;
typedef int* (S::*PMS1CV)(long) const volatile;
typedef int& (S::*PMS2CV)(long, int) const volatile;
+ typedef const int& (S::*PMS3CV)(int, ...) const volatile;
test_result_of<PMS0CV( S), int> ();
test_result_of<PMS0CV( S&), int> ();
test_result_of<PMS0CV(const S&), int> ();
@@ -321,6 +340,9 @@ int main()
test_result_of<PMS2CV(volatile S*&, int, int), int&> ();
test_result_of<PMS2CV(const volatile S*&, int, int), int&> ();
test_result_of<PMS2CV(std::unique_ptr<S>, int, int), int&> ();
+
+ test_result_of<PMS3CV(S&, int), const int &>();
+ test_result_of<PMS3CV(S&, int, long), const int &>();
}
{ // pointer to member data
typedef char S::*PMD;
diff --git a/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp b/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp
index 2b8cd709677..f7fb7ccfdfb 100644
--- a/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp
+++ b/libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp
@@ -58,6 +58,20 @@ void test_result_of_imp()
int main()
{
+ { // Function types with noexcept
+ typedef bool (&RF0)(int) noexcept;
+ typedef bool (&RF1)(int, ...) noexcept;
+ typedef bool (*PF0)(int) noexcept;
+ typedef bool (*PF1)(int, ...) noexcept;
+ typedef bool (*&PRF0)(int) noexcept;
+ typedef bool (*&PRF1)(int, ...) noexcept;
+ test_result_of_imp<RF0(int), bool>();
+ test_result_of_imp<PF0(int), bool>();
+ test_result_of_imp<PRF0(int), bool>();
+ test_result_of_imp<RF1(int, int), bool>();
+ test_result_of_imp<PF1(int, int), bool>();
+ test_result_of_imp<PRF1(int, int), bool>();
+ }
{
typedef char F::*PMD;
test_result_of_imp<PMD(F &), char &>();
OpenPOWER on IntegriCloud