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