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 24int 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