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 <__undef_min_max> 43732e2681SEvgeniy Stepanov 44732e2681SEvgeniy Stepanov#include <__debug> 45732e2681SEvgeniy Stepanov 46732e2681SEvgeniy Stepanov#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 47732e2681SEvgeniy Stepanov#pragma GCC system_header 48732e2681SEvgeniy Stepanov#endif 49732e2681SEvgeniy Stepanov 50732e2681SEvgeniy Stepanov_LIBCPP_BEGIN_NAMESPACE_LFTS 51732e2681SEvgeniy Stepanov 52732e2681SEvgeniy Stepanov 5381416e49SMarshall Clowtemplate <class _ForwardIterator, class _Searcher> 5481416e49SMarshall Clow_LIBCPP_INLINE_VISIBILITY 5581416e49SMarshall Clow_ForwardIterator search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher &__s) 5628cc4ddeSMarshall Clow{ return __s(__f, __l).first; } 5781416e49SMarshall Clow 5881416e49SMarshall Clow 59732e2681SEvgeniy Stepanovtemplate <class _PopulationIterator, class _SampleIterator, class _Distance, 60732e2681SEvgeniy Stepanov class _UniformRandomNumberGenerator> 61e7154709SEric Fiselierinline _LIBCPP_INLINE_VISIBILITY 62e7154709SEric Fiselier_SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last, 63*5741d86dSEric Fiselier _SampleIterator __output, _Distance __n, 64e7154709SEric Fiselier _UniformRandomNumberGenerator &&__g) { 65*5741d86dSEric Fiselier return _VSTD::__sample(__first, __last, __output, __n, __g); 66732e2681SEvgeniy Stepanov} 67732e2681SEvgeniy Stepanov 68732e2681SEvgeniy Stepanov_LIBCPP_END_NAMESPACE_LFTS 69732e2681SEvgeniy Stepanov 70732e2681SEvgeniy Stepanov#endif /* _LIBCPP_EXPERIMENTAL_ALGORITHM */ 71