1*0b57cec5SDimitry Andric// -*- C++ -*-
2*0b57cec5SDimitry Andric//===-------------------------- algorithm ---------------------------------===//
3*0b57cec5SDimitry Andric//
4*0b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*0b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
6*0b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*0b57cec5SDimitry Andric//
8*0b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
9*0b57cec5SDimitry Andric
10*0b57cec5SDimitry Andric#ifndef _LIBCPP_EXPERIMENTAL_ALGORITHM
11*0b57cec5SDimitry Andric#define _LIBCPP_EXPERIMENTAL_ALGORITHM
12*0b57cec5SDimitry Andric
13*0b57cec5SDimitry Andric/*
14*0b57cec5SDimitry Andric   experimental/algorithm synopsis
15*0b57cec5SDimitry Andric
16*0b57cec5SDimitry Andric#include <algorithm>
17*0b57cec5SDimitry Andric
18*0b57cec5SDimitry Andricnamespace std {
19*0b57cec5SDimitry Andricnamespace experimental {
20*0b57cec5SDimitry Andricinline namespace fundamentals_v1 {
21*0b57cec5SDimitry Andric
22*0b57cec5SDimitry Andrictemplate <class ForwardIterator, class Searcher>
23*0b57cec5SDimitry AndricForwardIterator search(ForwardIterator first, ForwardIterator last,
24*0b57cec5SDimitry Andric                       const Searcher &searcher);
25*0b57cec5SDimitry Andric
26*0b57cec5SDimitry Andric// sample removed because it's now part of C++17
27*0b57cec5SDimitry Andric
28*0b57cec5SDimitry Andric} // namespace fundamentals_v1
29*0b57cec5SDimitry Andric} // namespace experimental
30*0b57cec5SDimitry Andric} // namespace std
31*0b57cec5SDimitry Andric
32*0b57cec5SDimitry Andric*/
33*0b57cec5SDimitry Andric
34*0b57cec5SDimitry Andric#include <experimental/__config>
35*0b57cec5SDimitry Andric#include <algorithm>
36*0b57cec5SDimitry Andric#include <type_traits>
37*0b57cec5SDimitry Andric
38*0b57cec5SDimitry Andric#include <__debug>
39*0b57cec5SDimitry Andric
40*0b57cec5SDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
41*0b57cec5SDimitry Andric#pragma GCC system_header
42*0b57cec5SDimitry Andric#endif
43*0b57cec5SDimitry Andric
44*0b57cec5SDimitry Andric_LIBCPP_PUSH_MACROS
45*0b57cec5SDimitry Andric#include <__undef_macros>
46*0b57cec5SDimitry Andric
47*0b57cec5SDimitry Andric
48*0b57cec5SDimitry Andric_LIBCPP_BEGIN_NAMESPACE_LFTS
49*0b57cec5SDimitry Andric
50*0b57cec5SDimitry Andrictemplate <class _ForwardIterator, class _Searcher>
51*0b57cec5SDimitry Andric_LIBCPP_INLINE_VISIBILITY
52*0b57cec5SDimitry Andric_ForwardIterator search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher &__s)
53*0b57cec5SDimitry Andric{ return __s(__f, __l).first; }
54*0b57cec5SDimitry Andric
55*0b57cec5SDimitry Andric_LIBCPP_END_NAMESPACE_LFTS
56*0b57cec5SDimitry Andric
57*0b57cec5SDimitry Andric_LIBCPP_POP_MACROS
58*0b57cec5SDimitry Andric
59*0b57cec5SDimitry Andric#endif /* _LIBCPP_EXPERIMENTAL_ALGORITHM */
60