summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/utilities')
-rw-r--r--libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp11
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp28
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp11
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp10
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp11
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp14
-rw-r--r--libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp11
7 files changed, 95 insertions, 1 deletions
diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp
index a9c44818cf2..43e70ea5233 100644
--- a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp
@@ -26,4 +26,15 @@ int main()
assert(std::get<0>(p) == 3);
assert(std::get<1>(p) == 4);
}
+
+#if __cplusplus > 201103L
+ {
+ typedef std::pair<int, short> P;
+ constexpr P p1(3, 4);
+ static_assert(p1.first == 3, "" ); // for now!
+ static_assert(p1.second == 4, "" ); // for now!
+// static_assert(std::get<0>(p1) == 3, "");
+// static_assert(std::get<1>(p1) == 4, "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp
index de3a8641756..2041b39c2dc 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp
@@ -22,9 +22,20 @@ class A
public:
A(int data) : data_(data) {}
- bool operator==(const A& a) {return data_ == a.data_;}
+ bool operator==(const A& a) const {return data_ == a.data_;}
};
+#if _LIBCPP_STD_VER > 11
+class AC
+{
+ int data_;
+public:
+ constexpr AC(int data) : data_(data) {}
+
+ constexpr bool operator==(const AC& a) const {return data_ == a.data_;}
+};
+#endif
+
int main()
{
{
@@ -39,4 +50,19 @@ int main()
assert(p.first == A(1));
assert(p.second == 2);
}
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<float, short*> P;
+ constexpr P p(3.5f, 0);
+ static_assert(p.first == 3.5f, "");
+ static_assert(p.second == nullptr, "");
+ }
+ {
+ typedef std::pair<AC, int> P;
+ constexpr P p(1, 2);
+ static_assert(p.first == AC(1), "");
+ static_assert(p.second == 2, "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
index bcb3e533504..286cce47f05 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
@@ -26,4 +26,15 @@ int main()
assert(p2.first == 3);
assert(p2.second == 4);
}
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<int, short> P1;
+ typedef std::pair<double, long> P2;
+ constexpr P1 p1(3, 4);
+ constexpr P2 p2 = p1;
+ static_assert(p2.first == 3, "");
+ static_assert(p2.second == 4, "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp
index 433b0ae08b3..b163f246c7f 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp
@@ -25,4 +25,14 @@ int main()
assert(p2.first == 3);
assert(p2.second == 4);
}
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<int, short> P1;
+ constexpr P1 p1(3, 4);
+ constexpr P1 p2 = p1;
+ static_assert(p2.first == 3, "");
+ static_assert(p2.second == 4, "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp
index 644779e0e83..18fdb47bb42 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp
@@ -18,8 +18,19 @@
int main()
{
+ {
typedef std::pair<float, short*> P;
P p;
assert(p.first == 0.0f);
assert(p.second == nullptr);
+ }
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<float, short*> P;
+ constexpr P p;
+ static_assert(p.first == 0.0f, "");
+ static_assert(p.second == nullptr, "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp
index 821f4cd7b1e..9ba8532ab29 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp
@@ -78,4 +78,18 @@ int main()
assert( (p1 > p2));
assert( (p1 >= p2));
}
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<int, short> P;
+ constexpr P p1(3, 4);
+ constexpr P p2(3, 2);
+ static_assert(!(p1 == p2), "");
+ static_assert( (p1 != p2), "");
+ static_assert(!(p1 < p2), "");
+ static_assert(!(p1 <= p2), "");
+ static_assert( (p1 > p2), "");
+ static_assert( (p1 >= p2), "");
+ }
+#endif
}
diff --git a/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp
index a3d132ff5a7..48e09735abb 100644
--- a/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp
+++ b/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp
@@ -23,6 +23,7 @@ int main()
assert(p1.first == 3);
assert(p1.second == 4);
}
+
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
{
typedef std::pair<std::unique_ptr<int>, short> P1;
@@ -37,4 +38,14 @@ int main()
assert(p1.second == 4);
}
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::pair<int, short> P1;
+ constexpr P1 p1 = std::make_pair(3, 4);
+ static_assert(p1.first == 3, "");
+ static_assert(p1.second == 4, "");
+ }
+#endif
+
}
OpenPOWER on IntegriCloud