Home | History | Annotate | Download | only in pairs.spec
      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