1732e2681SEvgeniy Stepanov// -*- C++ -*-
2732e2681SEvgeniy Stepanov//===-------------------------- algorithm ---------------------------------===//
3732e2681SEvgeniy Stepanov//
4732e2681SEvgeniy Stepanov//                     The LLVM Compiler Infrastructure
5732e2681SEvgeniy Stepanov//
6732e2681SEvgeniy Stepanov// This file is dual licensed under the MIT and the University of Illinois Open
7732e2681SEvgeniy Stepanov// Source Licenses. See LICENSE.TXT for details.
8732e2681SEvgeniy Stepanov//
9732e2681SEvgeniy Stepanov//===----------------------------------------------------------------------===//
10732e2681SEvgeniy Stepanov
11732e2681SEvgeniy Stepanov#ifndef _LIBCPP_EXPERIMENTAL_ALGORITHM
12732e2681SEvgeniy Stepanov#define _LIBCPP_EXPERIMENTAL_ALGORITHM
13732e2681SEvgeniy Stepanov
14732e2681SEvgeniy Stepanov/*
15732e2681SEvgeniy Stepanov   experimental/algorithm synopsis
16732e2681SEvgeniy Stepanov
17732e2681SEvgeniy Stepanov#include <algorithm>
18732e2681SEvgeniy Stepanov
19732e2681SEvgeniy Stepanovnamespace std {
20732e2681SEvgeniy Stepanovnamespace experimental {
21732e2681SEvgeniy Stepanovinline namespace fundamentals_v1 {
22732e2681SEvgeniy Stepanov
23732e2681SEvgeniy Stepanovtemplate <class ForwardIterator, class Searcher>
24732e2681SEvgeniy StepanovForwardIterator search(ForwardIterator first, ForwardIterator last,
25732e2681SEvgeniy Stepanov                       const Searcher &searcher);
26732e2681SEvgeniy Stepanovtemplate <class PopulationIterator, class SampleIterator, class Distance,
27732e2681SEvgeniy Stepanov          class UniformRandomNumberGenerator>
28732e2681SEvgeniy StepanovSampleIterator sample(PopulationIterator first, PopulationIterator last,
29732e2681SEvgeniy Stepanov                      SampleIterator out, Distance n,
30732e2681SEvgeniy Stepanov                      UniformRandomNumberGenerator &&g);
31732e2681SEvgeniy Stepanov
32732e2681SEvgeniy Stepanov} // namespace fundamentals_v1
33732e2681SEvgeniy Stepanov} // namespace experimental
34732e2681SEvgeniy Stepanov} // namespace std
35732e2681SEvgeniy Stepanov
36732e2681SEvgeniy Stepanov*/
37732e2681SEvgeniy Stepanov
38732e2681SEvgeniy Stepanov#include <experimental/__config>
39732e2681SEvgeniy Stepanov#include <algorithm>
40732e2681SEvgeniy Stepanov#include <type_traits>
41732e2681SEvgeniy Stepanov
42732e2681SEvgeniy Stepanov#include <__debug>
43732e2681SEvgeniy Stepanov
44732e2681SEvgeniy Stepanov#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
45732e2681SEvgeniy Stepanov#pragma GCC system_header
46732e2681SEvgeniy Stepanov#endif
47732e2681SEvgeniy Stepanov
48*a016efb1SEric Fiselier_LIBCPP_PUSH_MACROS
49*a016efb1SEric Fiselier#include <__undef_macros>
50732e2681SEvgeniy Stepanov
51732e2681SEvgeniy Stepanov
52*a016efb1SEric Fiselier_LIBCPP_BEGIN_NAMESPACE_LFTS
53*a016efb1SEric Fiselier
5481416e49SMarshall Clowtemplate <class _ForwardIterator, class _Searcher>
5581416e49SMarshall Clow_LIBCPP_INLINE_VISIBILITY
5681416e49SMarshall Clow_ForwardIterator search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher &__s)
5728cc4ddeSMarshall Clow{ return __s(__f, __l).first; }
5881416e49SMarshall Clow
5981416e49SMarshall Clow
60732e2681SEvgeniy Stepanovtemplate <class _PopulationIterator, class _SampleIterator, class _Distance,
61732e2681SEvgeniy Stepanov          class _UniformRandomNumberGenerator>
62e7154709SEric Fiselierinline _LIBCPP_INLINE_VISIBILITY
63e7154709SEric Fiselier_SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last,
645741d86dSEric Fiselier                       _SampleIterator __output, _Distance __n,
65e7154709SEric Fiselier                       _UniformRandomNumberGenerator &&__g) {
665741d86dSEric Fiselier  return _VSTD::__sample(__first, __last, __output, __n, __g);
67732e2681SEvgeniy Stepanov}
68732e2681SEvgeniy Stepanov
69732e2681SEvgeniy Stepanov_LIBCPP_END_NAMESPACE_LFTS
70732e2681SEvgeniy Stepanov
71*a016efb1SEric Fiselier_LIBCPP_POP_MACROS
72*a016efb1SEric Fiselier
73732e2681SEvgeniy Stepanov#endif /* _LIBCPP_EXPERIMENTAL_ALGORITHM */
74