comparison.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <utility>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class T1, class T2> struct pair
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <utility>
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <cassert>
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int main()
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    {
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        typedef std::pair<int, short> P;
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        P p1(3, 4);
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        P p2(3, 4);
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        assert( (p1 == p2));
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        assert(!(p1 != p2));
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(!(p1 <  p2));
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 <= p2));
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 >  p2));
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 >= p2));
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        typedef std::pair<int, short> P;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        P p1(2, 4);
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        P p2(3, 4);
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 == p2));
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 != p2));
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 <  p2));
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 <= p2));
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 >  p2));
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 >= p2));
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        typedef std::pair<int, short> P;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        P p1(3, 2);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        P p2(3, 4);
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 == p2));
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 != p2));
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert( (p1 <  p2));
550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert( (p1 <= p2));
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert(!(p1 >  p2));
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert(!(p1 >= p2));
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    {
600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        typedef std::pair<int, short> P;
610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        P p1(3, 4);
620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        P p2(2, 4);
630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert(!(p1 == p2));
640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert( (p1 != p2));
650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert(!(p1 <  p2));
660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert(!(p1 <= p2));
670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert( (p1 >  p2));
680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        assert( (p1 >= p2));
690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    {
710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        typedef std::pair<int, short> P;
720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        P p1(3, 4);
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        P p2(3, 2);
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 == p2));
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 != p2));
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 <  p2));
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(!(p1 <= p2));
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 >  p2));
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert( (p1 >= p2));
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)