1// Copyright (C) 2005-2015 Free Software Foundation, Inc. 2// 3// This file is part of the GNU ISO C++ Library. This library is free 4// software; you can redistribute it and/or modify it under the 5// terms of the GNU General Public License as published by the 6// Free Software Foundation; either version 3, or (at your option) 7// any later version. 8 9// This library is distributed in the hope that it will be useful, 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12// GNU General Public License for more details. 13 14// You should have received a copy of the GNU General Public License along 15// with this library; see the file COPYING3. If not see 16// <http://www.gnu.org/licenses/>. 17 18// 25.1.9 [lib.alg.search] 19 20// { dg-do compile } 21 22#include <algorithm> 23#include <testsuite_iterators.h> 24 25using __gnu_test::forward_iterator_wrapper; 26 27struct T1 { }; 28struct T2 { }; 29 30struct S1 31{ 32 S1(T1) { } 33}; 34 35struct S2 { 36 S2(T2) { } 37}; 38 39bool 40operator==(const S1&, const S2&) {return true;} 41 42struct V1 { }; 43struct V2 { }; 44 45struct X1 46{ 47 X1(V1) { }; 48}; 49 50struct X2 51{ 52 X2(V2) { }; 53}; 54 55bool 56predicate(const X1&, const X2&) {return true;} 57 58forward_iterator_wrapper<S1> 59test1(forward_iterator_wrapper<S1>& s1, forward_iterator_wrapper<S2>& s2) 60{ return std::search(s1, s1, s2, s2); } 61 62forward_iterator_wrapper<T1> 63test2(forward_iterator_wrapper<T1>& s1, forward_iterator_wrapper<T2>& s2) 64{ return std::search(s1, s1, s2, s2); } 65 66forward_iterator_wrapper<X1> 67test3(forward_iterator_wrapper<X1>& x1, forward_iterator_wrapper<X2>& x2) 68{ return std::search(x1, x1, x2, x2, predicate); } 69 70forward_iterator_wrapper<V1> 71test4(forward_iterator_wrapper<V1>& x1, forward_iterator_wrapper<V2>& x2) 72{ return std::search(x1, x1, x2, x2, predicate); } 73