1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <utility> 11 12 // template <class T1, class T2> struct pair 13 14 // template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&); 15 // template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&); 16 // template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&); 17 // template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&); 18 // template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&); 19 // template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&); 20 21 #include <utility> 22 #include <cassert> 23 24 int main() 25 { 26 { 27 typedef std::pair<int, short> P; 28 P p1(3, 4); 29 P p2(3, 4); 30 assert( (p1 == p2)); 31 assert(!(p1 != p2)); 32 assert(!(p1 < p2)); 33 assert( (p1 <= p2)); 34 assert(!(p1 > p2)); 35 assert( (p1 >= p2)); 36 } 37 { 38 typedef std::pair<int, short> P; 39 P p1(2, 4); 40 P p2(3, 4); 41 assert(!(p1 == p2)); 42 assert( (p1 != p2)); 43 assert( (p1 < p2)); 44 assert( (p1 <= p2)); 45 assert(!(p1 > p2)); 46 assert(!(p1 >= p2)); 47 } 48 { 49 typedef std::pair<int, short> P; 50 P p1(3, 2); 51 P p2(3, 4); 52 assert(!(p1 == p2)); 53 assert( (p1 != p2)); 54 assert( (p1 < p2)); 55 assert( (p1 <= p2)); 56 assert(!(p1 > p2)); 57 assert(!(p1 >= p2)); 58 } 59 { 60 typedef std::pair<int, short> P; 61 P p1(3, 4); 62 P p2(2, 4); 63 assert(!(p1 == p2)); 64 assert( (p1 != p2)); 65 assert(!(p1 < p2)); 66 assert(!(p1 <= p2)); 67 assert( (p1 > p2)); 68 assert( (p1 >= p2)); 69 } 70 { 71 typedef std::pair<int, short> P; 72 P p1(3, 4); 73 P p2(3, 2); 74 assert(!(p1 == p2)); 75 assert( (p1 != p2)); 76 assert(!(p1 < p2)); 77 assert(!(p1 <= p2)); 78 assert( (p1 > p2)); 79 assert( (p1 >= p2)); 80 } 81 82 #if _LIBCPP_STD_VER > 11 83 { 84 typedef std::pair<int, short> P; 85 constexpr P p1(3, 4); 86 constexpr P p2(3, 2); 87 static_assert(!(p1 == p2), ""); 88 static_assert( (p1 != p2), ""); 89 static_assert(!(p1 < p2), ""); 90 static_assert(!(p1 <= p2), ""); 91 static_assert( (p1 > p2), ""); 92 static_assert( (p1 >= p2), ""); 93 } 94 #endif 95 } 96