eq.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <memory> 11 12// unique_ptr 13 14// template <class T1, class D1, class T2, class D2> 15// bool 16// operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); 17 18// template <class T1, class D1, class T2, class D2> 19// bool 20// operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); 21 22#include <memory> 23#include <cassert> 24 25#include "../deleter.h" 26 27struct A 28{ 29 static int count; 30 A() {++count;} 31 A(const A&) {++count;} 32 virtual ~A() {--count;} 33}; 34 35int A::count = 0; 36 37struct B 38 : public A 39{ 40 static int count; 41 B() {++count;} 42 B(const B&) {++count;} 43 virtual ~B() {--count;} 44}; 45 46int B::count = 0; 47 48int main() 49{ 50 { 51 const std::unique_ptr<A, Deleter<A> > p1(new A); 52 const std::unique_ptr<A, Deleter<A> > p2(new A); 53 assert(!(p1 == p2)); 54 assert(p1 != p2); 55 } 56 { 57 const std::unique_ptr<A, Deleter<A> > p1(new A); 58 const std::unique_ptr<B, Deleter<B> > p2(new B); 59 assert(!(p1 == p2)); 60 assert(p1 != p2); 61 } 62 { 63 const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); 64 const std::unique_ptr<A[], Deleter<A[]> > p2(new A[3]); 65 assert(!(p1 == p2)); 66 assert(p1 != p2); 67 } 68 { 69 const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); 70 const std::unique_ptr<B[], Deleter<B[]> > p2(new B[3]); 71 assert(!(p1 == p2)); 72 assert(p1 != p2); 73 } 74 { 75 const std::unique_ptr<A, Deleter<A> > p1; 76 const std::unique_ptr<A, Deleter<A> > p2; 77 assert(p1 == p2); 78 assert(!(p1 != p2)); 79 } 80 { 81 const std::unique_ptr<A, Deleter<A> > p1; 82 const std::unique_ptr<B, Deleter<B> > p2; 83 assert(p1 == p2); 84 assert(!(p1 != p2)); 85 } 86} 87