diff options
Diffstat (limited to 'libcxx/test/utilities')
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 + } |

