\hypertarget{algorithm_8h_source}{}\doxysection{algorithm.\+h} \label{algorithm_8h_source}\index{kblib/algorithm.h@{kblib/algorithm.h}} \mbox{\hyperlink{algorithm_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00004}00004 \textcolor{comment}{ * things.}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00005}00005 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00007}00007 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00012}00012 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00017}00017 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00019}00019 \textcolor{comment}{ * along with this program. If not, see .}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00021}00021 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef ALGORITHM\_H}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00033}00033 \textcolor{preprocessor}{\#define ALGORITHM\_H}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00034}00034 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00035}00035 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00036}00036 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00037}00037 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{iterators_8h}{iterators.h}}"{}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00038}00038 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{traits_8h}{traits.h}}"{}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00039}00039 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00040}00040 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00041}00041 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00042}00042 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00043}00043 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00044}\mbox{\hyperlink{namespacekblib}{00044}} \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00045}00045 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00052}00052 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Callable>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00053}\mbox{\hyperlink{namespacekblib_afc6af3c7ee821bb25dd692bd2fc92adb}{00053}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_afc6af3c7ee821bb25dd692bd2fc92adb}{repeat}}(std::size\_t N, Callable func) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(func()))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00054}00054 -\/> \mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{return\_assert\_t::value}}, \textcolor{keywordtype}{void}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00055}00055 \textcolor{keywordflow}{for} (std::size\_t I = 0; I != N; ++I) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00056}00056 func();} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00057}00057 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00058}00058 \textcolor{keywordflow}{return};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00059}00059 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00060}00060 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00067}00067 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} Elem>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00068}\mbox{\hyperlink{namespacekblib_aa760b40ea7f60976c66be6d77345317b}{00068}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aa760b40ea7f60976c66be6d77345317b}{erase}}(Container\& c, \textcolor{keyword}{const} Elem\& val) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00069}00069 \textcolor{keyword}{noexcept}(c.erase(std::remove(c.begin(), c.end(), val), c.end()))) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00070}00070 c.erase(std::remove(c.begin(), c.end(), val), c.end());} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00071}00071 \textcolor{keywordflow}{return};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00072}00072 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00073}00073 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00080}00080 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00081}\mbox{\hyperlink{namespacekblib_aa1240cf764c5182f37ab5b5051f90b40}{00081}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aa1240cf764c5182f37ab5b5051f90b40}{erase\_if}}(Container\& c, UnaryPredicate p) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00082}00082 \textcolor{keyword}{noexcept}(c.erase(std::remove\_if(c.begin(), c.end(), std::ref(p)), c.end())))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00083}00083 -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00084}00084 c.erase(std::remove\_if(c.begin(), c.end(), std::ref(p)), c.end());} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00085}00085 \textcolor{keywordflow}{return};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00086}00086 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00087}00087 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00093}00093 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00094}\mbox{\hyperlink{namespacekblib_a69f8d0752435e17b0c99ece2a5b599bb}{00094}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00095}00095 \textcolor{keyword}{const} Obj\& b) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} < b))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00096}00096 -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00097}00097 \textcolor{keywordflow}{return} not (\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} < b) and not (b < \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00098}00098 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00099}00099 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00105}00105 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keyword}{typename} Compare>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00106}\mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{00106}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} Obj\& b,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00107}00107 Compare comp) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(comp(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00108}00108 b)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00109}00109 -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00110}00110 \textcolor{keywordflow}{return} not comp(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b) and not comp(b, \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00111}00111 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00112}00112 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00122}00122 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Compare = \textcolor{keywordtype}{void}, \textcolor{keyword}{typename} Obj = \textcolor{keywordtype}{void}>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00123}\mbox{\hyperlink{structkblib_1_1equivalent}{00123}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1equivalent}{equivalent}} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00124}\mbox{\hyperlink{structkblib_1_1equivalent_a7f98fdc8ae52934bf9fb4e38ee5f5c51}{00124}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1equivalent_a7f98fdc8ae52934bf9fb4e38ee5f5c51}{operator()}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} Obj\& b,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00125}00125 Compare comp) \textcolor{keyword}{const}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00126}00126 \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, comp))) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00127}00127 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, comp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00128}00128 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00129}00129 \};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00130}00130 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00131}00131 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00132}\mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01_obj_01_4}{00132}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1equivalent}{equivalent}} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00133}\mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01_obj_01_4_afd4804cff8b0cc714ec36925c1c519b8}{00133}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01_obj_01_4_afd4804cff8b0cc714ec36925c1c519b8}{operator()}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} Obj\& b) \textcolor{keyword}{const}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00134}00134 \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b))) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00135}00135 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00136}00136 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00137}00137 \};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00138}00138 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00139}00139 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Compare>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00140}\mbox{\hyperlink{structkblib_1_1equivalent_3_01_compare_00_01void_01_4}{00140}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1equivalent}{equivalent}} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00141}00141 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00142}\mbox{\hyperlink{structkblib_1_1equivalent_3_01_compare_00_01void_01_4_a3b778b30a3b865b3688a2e525d51c06d}{00142}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1equivalent_3_01_compare_00_01void_01_4_a3b778b30a3b865b3688a2e525d51c06d}{operator()}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} Obj\& b,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00143}00143 Compare comp) \textcolor{keyword}{const}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00144}00144 \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, comp))) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00145}00145 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, comp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00146}00146 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00147}00147 \};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00148}00148 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00149}00149 \textcolor{keyword}{template} <>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00150}\mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01void_01_4}{00150}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1equivalent}{equivalent}} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00151}00151 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00152}\mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01void_01_4_ad78667bc686e848137fdd0de953ebac8}{00152}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1equivalent_3_01void_00_01void_01_4_ad78667bc686e848137fdd0de953ebac8}{operator()}}(\textcolor{keyword}{const} Obj\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} Obj\& b) \textcolor{keyword}{const}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00153}00153 \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b))) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00154}00154 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00155}00155 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00156}00156 \};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00157}00157 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00161}00161 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00162}\mbox{\hyperlink{namespacekblib_abedf2e5c556e6ab3ebb779227172a2ac}{00162}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a144f3d9a7e4b619bc53fbaf5e356c0c2}{accumulate}}(InputIt first, InputIt last, T init)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00163}00163 -\/> T \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00164}00164 \textcolor{keywordflow}{for} (; first != last; ++first) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00165}00165 init = std::move(init) + *first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00166}00166 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00167}00167 \textcolor{keywordflow}{return} init;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00168}00168 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00169}00169 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00173}00173 \textcolor{keyword}{template} <\textcolor{keyword}{class} InputIt, \textcolor{keyword}{class} T, \textcolor{keyword}{class} BinaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00174}\mbox{\hyperlink{namespacekblib_a144f3d9a7e4b619bc53fbaf5e356c0c2}{00174}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a144f3d9a7e4b619bc53fbaf5e356c0c2}{accumulate}}(InputIt first, InputIt last, T init,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00175}00175 BinaryOperation op) -\/> T \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00176}00176 \textcolor{keywordflow}{for} (; first != last; ++first) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00177}00177 init = op(std::move(init), *first);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00178}00178 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00179}00179 \textcolor{keywordflow}{return} init;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00180}00180 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00181}00181 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00193}00193 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00194}\mbox{\hyperlink{namespacekblib_ab0380312efcdc59f34b028e698c265dc}{00194}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac8b5f9fd83c3ec829e9ee86c2c7424f1}{sum}}(InputIt first, InputIt last)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00195}00195 -\/> \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(*first)> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00196}00196 \textcolor{keywordflow}{if} (first == last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00197}00197 \textcolor{keywordflow}{return} \{\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00198}00198 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00199}00199 \textcolor{keyword}{auto} init = *first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00200}00200 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_abedf2e5c556e6ab3ebb779227172a2ac}{kblib::accumulate}}(first, last, std::move(init));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00201}00201 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00202}00202 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00215}00215 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} BinaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00216}\mbox{\hyperlink{namespacekblib_ae86453386b48c0a0ad1b43938e4f7022}{00216}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac8b5f9fd83c3ec829e9ee86c2c7424f1}{sum}}(InputIt first, InputIt last,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00217}00217 BinaryOperation op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00218}00218 -\/> \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(*first)> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00219}00219 \textcolor{keywordflow}{if} (first == last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00220}00220 \textcolor{keywordflow}{return} \{\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00221}00221 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00222}00222 \textcolor{keyword}{auto} init = *first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00223}00223 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_abedf2e5c556e6ab3ebb779227172a2ac}{kblib::accumulate}}(first, last, std::move(init), op);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00224}00224 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00225}00225 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00236}00236 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00237}\mbox{\hyperlink{namespacekblib_ac8b5f9fd83c3ec829e9ee86c2c7424f1}{00237}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac8b5f9fd83c3ec829e9ee86c2c7424f1}{sum}}(Range\&\& r) -\/> \textcolor{keyword}{auto} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00238}00238 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00239}00239 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00240}00240 \textcolor{keyword}{auto} first = begin(r);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00241}00241 \textcolor{keyword}{auto} last = end(r);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00242}00242 \textcolor{keywordflow}{if} (first == last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00243}00243 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(*first)>\{\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00244}00244 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00245}00245 \textcolor{keyword}{auto} init = *first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00246}00246 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_abedf2e5c556e6ab3ebb779227172a2ac}{kblib::accumulate}}(first, last, std::move(init));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00247}00247 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00248}00248 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00249}00249 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} T,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00250}00250 \textcolor{keyword}{typename} BinaryAccumulation, \textcolor{keyword}{typename} UnaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00251}\mbox{\hyperlink{namespacekblib_aa51ef49b30290e4d7d6f7201e58560c1}{00251}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aa51ef49b30290e4d7d6f7201e58560c1}{transform\_exclusive\_scan}}(InputIt first, EndIt last,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00252}00252 OutputIt d\_first, T init,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00253}00253 BinaryAccumulation accum,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00254}00254 UnaryTransform proj) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00255}00255 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00256}00256 *d\_first++} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00257}00257 = \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{kblib::exchange}}(init, accum(std::move(init), proj(*first++)));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00258}00258 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00259}00259 \textcolor{keywordflow}{return} d\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00260}00260 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00261}00261 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00262}00262 \textcolor{preprocessor}{\#if 0}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00263}00263 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} BinaryAccumulation,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00264}00264 \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00265}00265 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00266}00266 adjacent\_reduce(InputIt begin, InputIt begin1, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00267}00267 BinaryAccumulation acc, BinaryTransform op) \{\}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00268}00268 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00269}00269 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00270}00270 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} adjacent\_transform(InputIt begin, InputIt begin1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00271}00271 InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00272}00272 BinaryTransform op) \{\}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00273}00273 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00274}00274 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} BinaryAccumulation,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00275}00275 \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00276}00276 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00277}00277 adjacent\_inclusive\_scan(InputIt begin, InputIt begin1, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00278}00278 BinaryAccumulation acc, BinaryTransform op) \{\}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00279}00279 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00280}00280 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00289}00289 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Elem>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00290}\mbox{\hyperlink{namespacekblib_abc7f2ec97efdee8640fe38e73fe1fdad}{00290}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a7cb44e374b0d5edb7ebce7e1a4e9862d}{find}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00291}00291 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00292}00292 \textcolor{keyword}{const} Elem\& value) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*begin == value)) -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00293}00293 \textcolor{keywordflow}{while} (begin != end and *begin != value) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00294}00294 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00295}00295 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00296}00296 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00297}00297 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00298}00298 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00308}00308 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Elem, \textcolor{keyword}{typename} Comp>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00309}\mbox{\hyperlink{namespacekblib_a7cb44e374b0d5edb7ebce7e1a4e9862d}{00309}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a7cb44e374b0d5edb7ebce7e1a4e9862d}{find}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00310}00310 ForwardIt begin, EndIt end, \textcolor{keyword}{const} Elem\& value,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00311}00311 Comp\&\& comp) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(comp(*begin, value))) -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00312}00312 \textcolor{keywordflow}{while} (begin != end and not \mbox{\hyperlink{namespacekblib_a20a98aa6b6876ad518d999ed85864a85}{equals}}(*begin, value, comp)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00313}00313 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00314}00314 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00315}00315 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00316}00316 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00317}00317 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00326}00326 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00327}\mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{00327}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{find\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00328}00328 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00329}00329 UnaryPredicate\&\& pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00330}00330 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00331}00331 \textcolor{keywordflow}{while} (begin != end and not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00332}00332 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00333}00333 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00334}00334 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00335}00335 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00336}00336 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00345}00345 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00346}\mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{00346}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{find\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00347}00347 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00348}00348 UnaryPredicate\&\& pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00349}00349 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00350}00350 \textcolor{keywordflow}{while} (begin != end and \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00351}00351 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00352}00352 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00353}00353 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00354}00354 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00355}00355 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00365}00365 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Elem>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00366}\mbox{\hyperlink{namespacekblib_a985430339c0a2e1100d0c77faa47806f}{00366}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a985430339c0a2e1100d0c77faa47806f}{find\_last}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00367}00367 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00368}00368 \textcolor{keyword}{const} Elem\& value) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*begin == value)) -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00369}00369 \textcolor{keywordflow}{if} (begin == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00370}00370 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00371}00371 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00372}00372 \textcolor{keyword}{auto} result = end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00373}00373 \textcolor{keywordflow}{while} (\textcolor{keyword}{true}) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00374}00374 \textcolor{keyword}{auto} new\_result = \mbox{\hyperlink{namespacekblib_abc7f2ec97efdee8640fe38e73fe1fdad}{kblib::find}}(begin, end, value);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00375}00375 \textcolor{keywordflow}{if} (new\_result == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00376}00376 \textcolor{keywordflow}{break};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00377}00377 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00378}00378 result = new\_result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00379}00379 begin = result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00380}00380 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00381}00381 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00382}00382 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00383}00383 \textcolor{keywordflow}{return} result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00384}00384 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00385}00385 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00395}00395 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00396}\mbox{\hyperlink{namespacekblib_afdfe60b4f1096a9f60d07cdfb4b5e427}{00396}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_afdfe60b4f1096a9f60d07cdfb4b5e427}{find\_last\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00397}00397 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00398}00398 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00399}00399 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00400}00400 \textcolor{keywordflow}{if} (begin == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00401}00401 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00402}00402 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00403}00403 \textcolor{keyword}{auto} result = end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00404}00404 \textcolor{keywordflow}{while} (\textcolor{keyword}{true}) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00405}00405 \textcolor{keyword}{auto} new\_result = \mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{kblib::find\_if}}(begin, end, pred);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00406}00406 \textcolor{keywordflow}{if} (new\_result == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00407}00407 \textcolor{keywordflow}{break};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00408}00408 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00409}00409 result = new\_result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00410}00410 begin = result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00411}00411 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00412}00412 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00413}00413 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00414}00414 \textcolor{keywordflow}{return} result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00415}00415 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00416}00416 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00426}00426 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00427}\mbox{\hyperlink{namespacekblib_a1782641d7170a2ef57145e460fe059be}{00427}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a1782641d7170a2ef57145e460fe059be}{find\_last\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00428}00428 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00429}00429 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00430}00430 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00431}00431 \textcolor{keywordflow}{if} (begin == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00432}00432 \textcolor{keywordflow}{return} begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00433}00433 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00434}00434 \textcolor{keyword}{auto} result = end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00435}00435 \textcolor{keywordflow}{while} (\textcolor{keyword}{true}) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00436}00436 \textcolor{keyword}{auto} new\_result = \mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{kblib::find\_if\_not}}(begin, end, pred);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00437}00437 \textcolor{keywordflow}{if} (new\_result == end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00438}00438 \textcolor{keywordflow}{break};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00439}00439 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00440}00440 result = new\_result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00441}00441 begin = result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00442}00442 ++begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00443}00443 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00444}00444 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00445}00445 \textcolor{keywordflow}{return} result;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00446}00446 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00447}00447 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00457}00457 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Elem>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00458}\mbox{\hyperlink{namespacekblib_a6cc206fcdb4a68b8cb6e393b5039a575}{00458}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a4b840bb625a22f5dfd674050892d3be1}{find\_in}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00459}00459 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00460}00460 \textcolor{keyword}{const} Elem\& value) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*begin == value)) -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00461}00461 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_abc7f2ec97efdee8640fe38e73fe1fdad}{kblib::find}}(begin, end, value) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00462}00462 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00463}00463 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00473}00473 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00474}\mbox{\hyperlink{namespacekblib_ae565c2bd3542ecc900319508c4204a0d}{00474}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab9d81bc7ce57c24888b9eebce31b596c}{find\_in\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00475}00475 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00476}00476 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00477}00477 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00478}00478 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{kblib::find\_if}}(begin, end, pred) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00479}00479 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00489}00489 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00490}\mbox{\hyperlink{namespacekblib_a104b402a896c7ba42eeb1ba513961cb6}{00490}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ad66766d83405b85f422894329c1b0762}{find\_in\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00491}00491 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00492}00492 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00493}00493 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00494}00494 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{kblib::find\_if\_not}}(begin, end, pred) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00495}00495 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00496}00496 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00497}00497 \textcolor{comment}{// find\_last\_in:}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00498}00498 \textcolor{comment}{// 1. Finds last v in range [begin, end) and returns the offset from begin}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00499}00499 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00509}00509 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Elem>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00510}\mbox{\hyperlink{namespacekblib_add03c5bc4490749865e16dff9030aa24}{00510}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a01ea69026c0c1b4403fd1f9e37bdf104}{find\_last\_in}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00511}00511 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00512}00512 \textcolor{keyword}{const} Elem\& value) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*begin == value)) -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00513}00513 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a985430339c0a2e1100d0c77faa47806f}{kblib::find\_last}}(begin, end, value) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00514}00514 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00515}00515 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00524}00524 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00525}\mbox{\hyperlink{namespacekblib_a45b776be68227a2b794c1345a3101df7}{00525}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a5cf3311b51778825d242cc19ceacc619}{find\_last\_in\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00526}00526 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00527}00527 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00528}00528 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00529}00529 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_afdfe60b4f1096a9f60d07cdfb4b5e427}{kblib::find\_last\_if}}(begin, end, pred) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00530}00530 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00540}00540 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00541}\mbox{\hyperlink{namespacekblib_a9b56a7bab2714ec861e909a930030cb6}{00541}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a7e88ca2c2fc0f9ee0a4731224ba4e0e4}{find\_last\_in\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00542}00542 ForwardIt begin, EndIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00543}00543 UnaryPredicate pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00544}00544 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00545}00545 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a1782641d7170a2ef57145e460fe059be}{kblib::find\_last\_if\_not}}(begin, end, pred) -\/ begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00546}00546 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00547}00547 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00557}00557 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00558}00558 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00559}\mbox{\hyperlink{namespacekblib_a4b840bb625a22f5dfd674050892d3be1}{00559}} \mbox{\hyperlink{namespacekblib_a4b840bb625a22f5dfd674050892d3be1}{find\_in}}(\textcolor{keyword}{const} Container\& c, \textcolor{keyword}{const} T\& value) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00560}00560 \textcolor{keyword}{noexcept}(*std::declval\&>() == value))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00561}00561 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00562}00562 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00563}00563 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00564}00564 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_abc7f2ec97efdee8640fe38e73fe1fdad}{kblib::find}}(begin(c), end(c), value) -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00565}00565 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00566}00566 \textcolor{preprocessor}{\#if 0}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00567}00567 \textcolor{keyword}{template}<\textcolor{keyword}{typename} ExecutionPolicy, \textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00568}00568 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a4b840bb625a22f5dfd674050892d3be1}{find\_in}}(ExecutionPolicy\&\& policy,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00569}00569 \textcolor{keyword}{const} Container\& c, \textcolor{keyword}{const} T\& v) -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00570}00570 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a7cb44e374b0d5edb7ebce7e1a4e9862d}{std::find}}(policy, std::begin(c), std::end(c), v) -\/ std::begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00571}00571 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00572}00572 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00573}00573 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00584}00584 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00585}\mbox{\hyperlink{namespacekblib_ab9d81bc7ce57c24888b9eebce31b596c}{00585}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab9d81bc7ce57c24888b9eebce31b596c}{find\_in\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00586}00586 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00587}00587 UnaryPredicate} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00588}00588 pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00589}00589 *std::declval<\mbox{\hyperlink{namespacekblib_a50228da6d1f395258a03db48257305d0}{iterator\_type\_for\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00590}00590 \textcolor{keyword}{const} Container>\&>())))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00591}00591 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00592}00592 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00593}00593 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00594}00594 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{kblib::find\_if}}(begin(c), end(c), pred) -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00595}00595 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00606}00606 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00607}\mbox{\hyperlink{namespacekblib_ad66766d83405b85f422894329c1b0762}{00607}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ad66766d83405b85f422894329c1b0762}{find\_in\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00608}00608 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00609}00609 UnaryPredicate} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00610}00610 pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00611}00611 *std::declval<\mbox{\hyperlink{namespacekblib_a50228da6d1f395258a03db48257305d0}{iterator\_type\_for\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00612}00612 \textcolor{keyword}{const} Container>\&>())))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00613}00613 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00614}00614 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00615}00615 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00616}00616 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{kblib::find\_if\_not}}(begin(c), end(c), pred) -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00617}00617 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00618}00618 \textcolor{preprocessor}{\#if 0}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00619}00619 \textcolor{keyword}{template}<\textcolor{keyword}{typename} ExecutionPolicy, \textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00620}00620 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab9d81bc7ce57c24888b9eebce31b596c}{find\_in\_if}}(ExecutionPolicy\&\& policy,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00621}00621 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00622}00622 UnaryPredicate p) -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00623}00623 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a4b49eacc73a9295677cb08d9b7892ff6}{std::find\_if}}(policy, std::begin(c), std::end(c), p) -\/ std::begin(c);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00624}00624 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00625}00625 \textcolor{keyword}{template}<\textcolor{keyword}{typename} ExecutionPolicy, \textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00626}00626 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ad66766d83405b85f422894329c1b0762}{find\_in\_if\_not}}(ExecutionPolicy\&\& policy,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00627}00627 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00628}00628 UnaryPredicate p) -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00629}00629 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_ac30ce90c5b10639c0243952248897b51}{std::find\_if\_not}}(policy, std::begin(c), std::end(c), p)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00630}00630 -\/ std::begin(c);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00631}00631 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00632}00632 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00633}00633 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00643}00643 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00644}00644 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00645}\mbox{\hyperlink{namespacekblib_a01ea69026c0c1b4403fd1f9e37bdf104}{00645}} \mbox{\hyperlink{namespacekblib_a01ea69026c0c1b4403fd1f9e37bdf104}{find\_last\_in}}(\textcolor{keyword}{const} Container\& c, \textcolor{keyword}{const} T\& value) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00646}00646 \textcolor{keyword}{noexcept}(*std::declval\&>() == value))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00647}00647 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00648}00648 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00649}00649 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00650}00650 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a985430339c0a2e1100d0c77faa47806f}{kblib::find\_last}}(begin(c), end(c), value) -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00651}00651 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00652}00652 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00663}00663 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00664}\mbox{\hyperlink{namespacekblib_a5cf3311b51778825d242cc19ceacc619}{00664}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a5cf3311b51778825d242cc19ceacc619}{find\_last\_in\_if}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00665}00665 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00666}00666 UnaryPredicate} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00667}00667 pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00668}00668 *std::declval<\mbox{\hyperlink{namespacekblib_a50228da6d1f395258a03db48257305d0}{iterator\_type\_for\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00669}00669 \textcolor{keyword}{const} Container>\&>())))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00670}00670 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00671}00671 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00672}00672 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00673}00673 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_afdfe60b4f1096a9f60d07cdfb4b5e427}{kblib::find\_last\_if}}(begin(c), end(c), pred) -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00674}00674 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00685}00685 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00686}\mbox{\hyperlink{namespacekblib_a7e88ca2c2fc0f9ee0a4731224ba4e0e4}{00686}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a7e88ca2c2fc0f9ee0a4731224ba4e0e4}{find\_last\_in\_if\_not}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00687}00687 \textcolor{keyword}{const} Container\& c,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00688}00688 UnaryPredicate} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00689}00689 pred) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00690}00690 *std::declval<\mbox{\hyperlink{namespacekblib_a50228da6d1f395258a03db48257305d0}{iterator\_type\_for\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00691}00691 \textcolor{keyword}{const} Container>\&>())))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00692}00692 -\/> \textcolor{keywordtype}{size\_t} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00693}00693 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00694}00694 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00695}00695 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(\mbox{\hyperlink{namespacekblib_a1782641d7170a2ef57145e460fe059be}{kblib::find\_last\_if\_not}}(begin(c), end(c), pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00696}00696 -\/ begin(c));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00697}00697 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00698}00698 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00699}00699 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00700}00700 \textcolor{keyword}{typename} BinaryPredicate = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00701}\mbox{\hyperlink{namespacekblib_a85ee751e6068e1e86e93ef1cb34f2d1f}{00701}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae8e1b4d2193bbc1a7bd04aca85cdfe36}{find\_match}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00702}00702 InputIt2 begin2, BinaryPredicate cmp)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00703}00703 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00704}00704 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00705}00705 and \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{is\_invocable}}::value,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00707}00707 std::pair> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00708}00708 \textcolor{keywordflow}{while} (begin1 != end1) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00709}00709 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(cmp, *begin1++, *begin2++)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00710}00710 \textcolor{keywordflow}{return} std::make\_pair(begin1, begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00711}00711 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00712}00712 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00713}00713 \textcolor{keywordflow}{return} std::make\_pair(begin1, begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00714}00714 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00715}00715 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00716}00716 \textcolor{keyword}{typename} EndIt2, \textcolor{keyword}{typename} BinaryPredicate = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00717}\mbox{\hyperlink{namespacekblib_ae8e1b4d2193bbc1a7bd04aca85cdfe36}{00717}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae8e1b4d2193bbc1a7bd04aca85cdfe36}{find\_match}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00718}00718 InputIt2 begin2, EndIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00719}00719 BinaryPredicate cmp)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00720}00720 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00721}00721 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00722}00722 and \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{is\_invocable}}::value,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00724}00724 std::pair> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00725}00725 \textcolor{keywordflow}{while} (begin1 != end1 and begin2 != end2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00726}00726 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(cmp, *begin1++, *begin2++)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00727}00727 \textcolor{keywordflow}{return} std::make\_pair(begin1, begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00728}00728 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00729}00729 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00730}00730 \textcolor{keywordflow}{return} std::make\_pair(begin1, begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00731}00731 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00732}00732 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00736}00736 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00737}00737 \textcolor{keyword}{typename} EndIt2, \textcolor{keyword}{typename} BinaryPred>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00738}\mbox{\hyperlink{namespacekblib_a8cdb20ed932413236d054b256207b5e3}{00738}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aece8787c934d63869d013a3f5e15cc56}{starts\_with}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00739}00739 InputIt2 begin2, EndIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00740}00740 BinaryPred pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00741}00741 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00742}00742 (is\_input\_iterator\_v and is\_input\_iterator\_v) \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00743}00743 and not (\mbox{\hyperlink{namespacekblib_a9f3169b47a686b2f29f36d4419530960}{is\_random\_access\_iterator\_v}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00744}00744 InputIt1> and is\_random\_access\_iterator\_v),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00745}00745 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00746}00746 \textcolor{keywordflow}{while} (begin1 != end1 and begin2 != end2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00747}00747 \textcolor{keywordflow}{if} (not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin1++, *begin2++)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00748}00748 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00749}00749 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00750}00750 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00751}00751 \textcolor{keywordflow}{return} begin2 == end2;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00752}00752 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00753}00753 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00757}00757 \textcolor{keyword}{template} <\textcolor{keyword}{typename} RandomAccessIt1, \textcolor{keyword}{typename} RandomAccessIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00758}00758 \textcolor{keyword}{typename} BinaryPred = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00759}\mbox{\hyperlink{namespacekblib_aece8787c934d63869d013a3f5e15cc56}{00759}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aece8787c934d63869d013a3f5e15cc56}{starts\_with}}(RandomAccessIt1 begin1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00760}00760 RandomAccessIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00761}00761 RandomAccessIt2 begin2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00762}00762 RandomAccessIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00763}00763 BinaryPred pred = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00764}00764 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00765}00765 \mbox{\hyperlink{namespacekblib_a9f3169b47a686b2f29f36d4419530960}{is\_random\_access\_iterator\_v}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00766}00766 RandomAccessIt1> and is\_random\_access\_iterator\_v,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00767}00767 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00768}00768 \textcolor{keywordflow}{if} (end2 -\/ begin2 > end1 -\/ begin1) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00769}00769 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00770}00770 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00771}00771 \textcolor{keyword}{auto} N = end2 -\/ begin2;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00772}00772 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{kblib::equal}}(begin1, begin1 + N, begin2, pred);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00773}00773 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00774}00774 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00775}00775 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00779}00779 \textcolor{keyword}{template} <\textcolor{keyword}{typename} BidirIt1, \textcolor{keyword}{typename} BidirIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00780}00780 \textcolor{keyword}{typename} BinaryPred = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00781}\mbox{\hyperlink{namespacekblib_a86b688283b8d950e84631a29f2351c77}{00781}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a72257d3086cc368c6314f8013331915e}{ends\_with}}(BidirIt1 begin1, BidirIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00782}00782 BidirIt2 begin2, BidirIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00783}00783 BinaryPred pred = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00784}00784 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00785}00785 (is\_bidirectional\_iterator\_v \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00786}00786 and is\_bidirectional\_iterator\_v) \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00787}00787 and not (\mbox{\hyperlink{namespacekblib_a9f3169b47a686b2f29f36d4419530960}{is\_random\_access\_iterator\_v}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00788}00788 BidirIt1> and is\_random\_access\_iterator\_v),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00789}00789 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00790}00790 \textcolor{keywordflow}{while} (begin1 != end1 and begin2 != end2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00791}00791 \textcolor{keywordflow}{if} (not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *-\/-\/end1, *-\/-\/end2)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00792}00792 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00793}00793 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00794}00794 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00795}00795 \textcolor{keywordflow}{return} begin2 == end2;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00796}00796 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00797}00797 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00801}00801 \textcolor{keyword}{template} <\textcolor{keyword}{typename} RandomAccessIt1, \textcolor{keyword}{typename} RandomAccessIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00802}00802 \textcolor{keyword}{typename} BinaryPred = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00803}\mbox{\hyperlink{namespacekblib_a72257d3086cc368c6314f8013331915e}{00803}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a72257d3086cc368c6314f8013331915e}{ends\_with}}(RandomAccessIt1 begin1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00804}00804 RandomAccessIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00805}00805 RandomAccessIt2 begin2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00806}00806 RandomAccessIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00807}00807 BinaryPred pred = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00808}00808 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00809}00809 \mbox{\hyperlink{namespacekblib_a9f3169b47a686b2f29f36d4419530960}{is\_random\_access\_iterator\_v}}<} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00810}00810 RandomAccessIt1> and is\_random\_access\_iterator\_v,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00811}00811 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00812}00812 \textcolor{keywordflow}{if} (end2 -\/ begin2 > end1 -\/ begin1) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00813}00813 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00814}00814 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00815}00815 \textcolor{keyword}{auto} N = end2 -\/ begin2;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00816}00816 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{kblib::equal}}(end1 -\/ N, end1, begin2, pred);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00817}00817 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00818}00818 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00819}00819 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00820}00820 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} UnaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00821}\mbox{\hyperlink{namespacekblib_a19c27b7a705228b485f3eec2a0605ba6}{00821}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a243dd4c94b862837cbcb3a21fc7c7850}{first\_result}}(InputIt begin, EndIt end, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00822}00822 UnaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00823}00823 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00824}00824 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00825}00825 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00826}00826 \textcolor{keyword}{auto} cur = op(*begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00827}00827 \textcolor{keywordflow}{if} (cur != def) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00828}00828 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00829}00829 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00830}00830 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00831}00831 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00832}00832 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00833}00833 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} T,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00834}00834 \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00835}\mbox{\hyperlink{namespacekblib_a303620c746944b847de94534da396cd0}{00835}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a243dd4c94b862837cbcb3a21fc7c7850}{first\_result}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00836}00836 InputIt2 begin2, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00837}00837 BinaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00838}00838 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00839}00839 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00840}00840 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin1, *begin2))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00841}00841 \textcolor{keywordflow}{for} (; begin1 != end1; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00842}00842 \textcolor{keyword}{auto} cur = op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00843}00843 \textcolor{keywordflow}{if} (cur != def) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00844}00844 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00845}00845 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00846}00846 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00847}00847 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00848}00848 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00849}00849 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00850}00850 \textcolor{keyword}{typename} EndIt2, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00851}\mbox{\hyperlink{namespacekblib_a243dd4c94b862837cbcb3a21fc7c7850}{00851}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a243dd4c94b862837cbcb3a21fc7c7850}{first\_result}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00852}00852 InputIt2 begin2, EndIt2 end2, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00853}00853 BinaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00854}00854 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00855}00855 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00856}00856 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin1, *begin2))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00857}00857 \textcolor{keywordflow}{for} (; begin1 != end1 and begin2 != end2; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00858}00858 \textcolor{keyword}{auto} cur = op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00859}00859 \textcolor{keywordflow}{if} (cur != def) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00860}00860 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00861}00861 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00862}00862 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00863}00863 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00864}00864 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00865}00865 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00866}00866 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} UnaryTransform,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00867}00867 \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00868}\mbox{\hyperlink{namespacekblib_a50dd5af1197cf9f384b53fe0ea30eaf8}{00868}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a416854a4e20de3e66dc94a591b8fd709}{first\_result\_if}}(InputIt begin, EndIt end, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00869}00869 UnaryTransform op,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00870}00870 UnaryPredicate ch)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00871}00871 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keyword}{decltype}(op(*begin))> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00872}00872 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00873}00873 \textcolor{keywordflow}{if} (ch(*begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00874}00874 \textcolor{keywordflow}{return} op(*begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00875}00875 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00876}00876 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00877}00877 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00878}00878 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00879}00879 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} T,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00880}00880 \textcolor{keyword}{typename} BinaryTransform, \textcolor{keyword}{typename} BinaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00881}\mbox{\hyperlink{namespacekblib_afb43a77bbb2f42381d1c241d96fd01ba}{00881}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a416854a4e20de3e66dc94a591b8fd709}{first\_result\_if}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00882}00882 InputIt2 begin2, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00883}00883 BinaryTransform op,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00884}00884 BinaryPredicate ch)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00885}00885 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00886}00886 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00887}00887 \textcolor{keyword}{decltype}(op(*begin1, *begin2))> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00888}00888 \textcolor{keywordflow}{for} (; begin1 != end1; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00889}00889 \textcolor{keywordflow}{if} (ch(*begin1, *begin2)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00890}00890 \textcolor{keywordflow}{return} op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00891}00891 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00892}00892 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00893}00893 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00894}00894 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00895}00895 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00896}00896 \textcolor{keyword}{typename} EndIt2, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} BinaryTransform,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00897}00897 \textcolor{keyword}{typename} BinaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00898}\mbox{\hyperlink{namespacekblib_a416854a4e20de3e66dc94a591b8fd709}{00898}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a416854a4e20de3e66dc94a591b8fd709}{first\_result\_if}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00899}00899 InputIt2 begin2, EndIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00900}00900 T def, BinaryTransform op,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00901}00901 BinaryPredicate ch)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00902}00902 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00903}00903 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00904}00904 \textcolor{keyword}{decltype}(op(*begin1, *begin2))> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00905}00905 \textcolor{keywordflow}{for} (; begin1 != end1 and begin2 != end2; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00906}00906 \textcolor{keywordflow}{if} (ch(*begin1, *begin2)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00907}00907 \textcolor{keywordflow}{return} op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00908}00908 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00909}00909 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00910}00910 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00911}00911 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00912}00912 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00913}00913 \textcolor{preprocessor}{\#if KBLIB\_USE\_CXX17}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00914}00914 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00915}\mbox{\hyperlink{structkblib_1_1is__optional}{00915}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__optional}{is\_optional}} : std::false\_type \{\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00916}00916 \textcolor{keyword}{template} <\textcolor{keyword}{typename} U>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00917}\mbox{\hyperlink{structkblib_1_1is__optional_3_01std_1_1optional_3_01_u_01_4_01_4}{00917}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__optional}{is\_optional}}<\mbox{\hyperlink{namespacestd}{std}}::optional> : std::true\_type \{\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00918}00918 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00919}00919 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} UnaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00920}\mbox{\hyperlink{namespacekblib_aedb8bdb7d08d66f5896e94ea33e93ebb}{00920}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a726214edec4457179f1a8261c9987a28}{first\_result\_opt}}(InputIt begin, EndIt end, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00921}00921 UnaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00922}00922 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00923}00923 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00924}00924 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00925}00925 \textcolor{keyword}{auto} cur = op(*begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00926}00926 \textcolor{keywordflow}{if} (cur) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00927}00927 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00928}00928 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00929}00929 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00930}00930 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00931}00931 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00932}00932 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} T,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00933}00933 \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00934}\mbox{\hyperlink{namespacekblib_ae59131730a066402fc31c3ace96fcc59}{00934}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a726214edec4457179f1a8261c9987a28}{first\_result\_opt}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00935}00935 InputIt2 begin2, T def,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00936}00936 BinaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00937}00937 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00938}00938 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00939}00939 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin1, *begin2))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00940}00940 \textcolor{keywordflow}{for} (; begin1 != end1; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00941}00941 \textcolor{keyword}{auto} cur = op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00942}00942 \textcolor{keywordflow}{if} (cur) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00943}00943 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00944}00944 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00945}00945 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00946}00946 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00947}00947 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00948}00948 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} EndIt1, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00949}00949 \textcolor{keyword}{typename} EndIt2, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} BinaryTransform>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00950}\mbox{\hyperlink{namespacekblib_a726214edec4457179f1a8261c9987a28}{00950}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a726214edec4457179f1a8261c9987a28}{first\_result\_opt}}(InputIt1 begin1, EndIt1 end1,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00951}00951 InputIt2 begin2, EndIt2 end2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00952}00952 T def, BinaryTransform op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00953}00953 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00954}00954 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00955}00955 \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{std::decay\_t}}<\textcolor{keyword}{decltype}(op(*begin1, *begin2))>> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00956}00956 \textcolor{keywordflow}{for} (; begin1 != end1 and begin2 != end2; ++begin1, ++begin2) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00957}00957 \textcolor{keyword}{auto} cur = op(*begin1, *begin2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00958}00958 \textcolor{keywordflow}{if} (cur) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00959}00959 \textcolor{keywordflow}{return} cur;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00960}00960 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00961}00961 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00962}00962 \textcolor{keywordflow}{return} def;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00963}00963 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00964}00964 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00965}00965 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00969}00969 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00970}\mbox{\hyperlink{namespacekblib_ab437bea5ac232c0a681f8bb1d3754170}{00970}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a3a1a48159ee73f9c98ad2665c3fd4079}{all\_of}}(InputIt begin, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00971}00971 UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00972}00972 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00973}00973 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00974}00974 \textcolor{keywordflow}{if} (not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00975}00975 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00976}00976 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00977}00977 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00978}00978 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00979}00979 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00983}00983 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00984}\mbox{\hyperlink{namespacekblib_a3a1a48159ee73f9c98ad2665c3fd4079}{00984}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a3a1a48159ee73f9c98ad2665c3fd4079}{all\_of}}(Range\&\& rng, UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00985}00985 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00986}00986 \textcolor{keywordflow}{for} (\textcolor{keyword}{auto}\&\& el : std::forward(rng)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00987}00987 \textcolor{keywordflow}{if} (not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, \textcolor{keyword}{static\_cast<}decltype(el)\textcolor{keyword}{>}(el))) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00988}00988 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00989}00989 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00990}00990 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00991}00991 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00992}00992 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00996}00996 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00997}\mbox{\hyperlink{namespacekblib_aad79cff7fa01a4ed3d85b83b419cab08}{00997}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae58938274f29202b1a8c9b07f98ed912}{none\_of}}(InputIt begin, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00998}00998 UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l00999}00999 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01000}01000 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01001}01001 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01002}01002 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01003}01003 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01004}01004 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01005}01005 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01006}01006 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01010}01010 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01011}\mbox{\hyperlink{namespacekblib_ae58938274f29202b1a8c9b07f98ed912}{01011}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae58938274f29202b1a8c9b07f98ed912}{none\_of}}(Range\&\& rng, UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01012}01012 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01013}01013 \textcolor{keywordflow}{for} (\textcolor{keyword}{auto}\&\& el : std::forward(rng)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01014}01014 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, \textcolor{keyword}{static\_cast<}decltype(el)\textcolor{keyword}{>}(el))) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01015}01015 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01016}01016 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01017}01017 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01018}01018 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01019}01019 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01023}01023 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01024}\mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{01024}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a16a5842f4404c27f10371190be51bf49}{any\_of}}(InputIt begin, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01025}01025 UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01026}01026 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01027}01027 \textcolor{keywordflow}{for} (; begin != end; ++begin) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01028}01028 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *begin)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01029}01029 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01030}01030 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01031}01031 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01032}01032 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01033}01033 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01037}01037 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range, \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01038}\mbox{\hyperlink{namespacekblib_a16a5842f4404c27f10371190be51bf49}{01038}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a16a5842f4404c27f10371190be51bf49}{any\_of}}(Range\&\& rng, UnaryPredicate pred)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01039}01039 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01040}01040 \textcolor{keywordflow}{for} (\textcolor{keyword}{auto}\&\& el : std::forward(rng)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01041}01041 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, \textcolor{keyword}{static\_cast<}decltype(el)\textcolor{keyword}{>}(el))) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01042}01042 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01043}01043 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01044}01044 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01045}01045 \textcolor{keywordflow}{return} \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01046}01046 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01047}01047 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01051}01051 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} Value>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01052}\mbox{\hyperlink{namespacekblib_a049d0a38a218a1d7cf786ea8f01f2073}{01052}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0188bc62243d7008096fd565fb6b2e83}{contains}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01053}01053 InputIt begin, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01054}01054 \textcolor{keyword}{const} Value\& val) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*begin == val))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01055}01055 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01056}01056 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{kblib::any\_of}}(begin, end, [\&](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& \mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{e}}) \{ \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{e}} == val; \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01057}01057 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01058}01058 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01062}01062 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Set, \textcolor{keyword}{typename} Value>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01063}\mbox{\hyperlink{namespacekblib_a0188bc62243d7008096fd565fb6b2e83}{01063}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0188bc62243d7008096fd565fb6b2e83}{contains}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01064}01064 \textcolor{keyword}{const} Set\& set,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01065}01065 \textcolor{keyword}{const} Value\&} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01066}01066 val) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*std::declval\&>()} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01067}01067 == val))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01068}01068 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<\mbox{\hyperlink{structkblib_1_1is__iterable}{is\_iterable::value}}, \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01069}01069 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01070}01070 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01071}01071 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{kblib::any\_of}}(begin(set), end(set),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01072}01072 [\&](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& \mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{e}}) \{ \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{e}} == val; \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01073}01073 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01074}01074 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01075}01075 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} InputIt2>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01076}\mbox{\hyperlink{namespacekblib_a906cc73872a93e33b3ce8a3a66319012}{01076}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab4a3305951b7977f071de23396e980bc}{contains\_any}}(InputIt1 begin, InputIt1 end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01077}01077 InputIt2 n\_begin, InputIt2 n\_end)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01078}01078 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01079}01079 and \mbox{\hyperlink{structkblib_1_1is__input__iterator}{is\_input\_iterator::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01080}01080 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01081}01081 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{kblib::any\_of}}(begin, end, [=](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& v) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01082}01082 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a049d0a38a218a1d7cf786ea8f01f2073}{kblib::contains}}(n\_begin, n\_end, v);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01083}01083 \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01084}01084 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01085}01085 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01086}01086 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} Range2>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01087}\mbox{\hyperlink{namespacekblib_a6de3ee39cfc6317455f5035a014d024c}{01087}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab4a3305951b7977f071de23396e980bc}{contains\_any}}(InputIt begin, InputIt end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01088}01088 Range2\&\& needle)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01089}01089 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01090}01090 and \mbox{\hyperlink{structkblib_1_1is__iterable}{is\_iterable::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01091}01091 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01092}01092 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{kblib::any\_of}}(begin, end, [\&needle](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& v) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01093}01093 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a049d0a38a218a1d7cf786ea8f01f2073}{kblib::contains}}(needle, v);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01094}01094 \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01095}01095 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01096}01096 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01097}01097 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range1, \textcolor{keyword}{typename} Range2>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01098}\mbox{\hyperlink{namespacekblib_ab4a3305951b7977f071de23396e980bc}{01098}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab4a3305951b7977f071de23396e980bc}{contains\_any}}(Range1\&\& haystack, Range2\&\& needle)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01099}01099 -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t::value}} and \mbox{\hyperlink{structkblib_1_1is__iterable}{is\_iterable::value}},} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01100}01100 \textcolor{keywordtype}{bool}> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01101}01101 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01102}01102 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01103}01103 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a2696df0185d20ec1445d22247e259ab1}{kblib::any\_of}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01104}01104 begin(haystack), end(haystack),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01105}01105 [\&needle](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& v) \{ \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a049d0a38a218a1d7cf786ea8f01f2073}{kblib::contains}}(needle, v); \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01106}01106 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01107}01107 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01108}01108 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Compare = std::less<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01109}\mbox{\hyperlink{namespacekblib_a85f026b89c516de43393ab0259c1c834}{01109}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a85f026b89c516de43393ab0259c1c834}{max\_element}}(ForwardIt first, EndIt last, Compare comp = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01110}01110 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01111}01111 \textcolor{keywordflow}{if} (first == last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01112}01112 \textcolor{keywordflow}{return} first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01113}01113 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01114}01114 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01115}01115 ForwardIt largest = first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01116}01116 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01117}01117 \textcolor{keywordflow}{for} (; first != last; ++first) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01118}01118 \textcolor{keywordflow}{if} (comp(*largest, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01119}01119 largest = first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01120}01120 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01121}01121 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01122}01122 \textcolor{keywordflow}{return} largest;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01123}01123 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01124}01124 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01144}01144 \textcolor{keyword}{template} <\textcolor{keyword}{typename} SequenceContainer, \textcolor{keyword}{typename} Comp = std::less<>, \textcolor{keyword}{typename} It,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01145}01145 enable\_if\_t, \textcolor{keywordtype}{int}> = 0>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01146}\mbox{\hyperlink{namespacekblib_a774bfbeef759d1bbedb5908f1348591b}{01146}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a774bfbeef759d1bbedb5908f1348591b}{get\_max\_n\_old}}(It first, It last,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01147}01147 std::size\_t count, Comp cmp = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01148}01148 -\/> SequenceContainer \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01149}01149 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01150}01150 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01151}01151 assert(first + count <= last);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01152}01152 SequenceContainer c\{first, first + count\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01153}01153 \mbox{\hyperlink{namespacekblib_a5a3199d9020a07ae387f60a6ef61393b}{std::for\_each}}(first + count, last, [\&](\textcolor{keyword}{const} \textcolor{keyword}{auto}\& v) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01154}01154 \textcolor{keyword}{auto}\& min\_v = *std::min\_element(begin(c), end(c), cmp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01155}01155 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(cmp, min\_v, v)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01156}01156 min\_v = v;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01157}01157 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01158}01158 \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01159}01159 \textcolor{keywordflow}{return} c;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01160}01160 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01161}01161 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01178}01178 \textcolor{keyword}{template} <\textcolor{keyword}{typename} SetlikeContainer, \textcolor{keyword}{typename} Comp = std::less<>, \textcolor{keyword}{typename} It,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01179}01179 enable\_if\_t, \textcolor{keywordtype}{int}> = 0>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01180}01180 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a774bfbeef759d1bbedb5908f1348591b}{get\_max\_n\_old}}(It first, It last,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01181}01181 std::size\_t count, Comp cmp = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01182}01182 -\/> SetlikeContainer \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01183}01183 \textcolor{keyword}{auto} temp = get\_max\_n\_old>>(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01184}01184 first, last, count, cmp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01185}01185 \textcolor{keywordflow}{return} SetlikeContainer\{std::make\_move\_iterator(temp.begin()),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01186}01186 std::make\_move\_iterator(temp.end())\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01187}01187 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01188}01188 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01201}01201 \textcolor{keyword}{template} <\textcolor{keyword}{typename} SequenceContainer, \textcolor{keyword}{typename} Comp = std::less<>, \textcolor{keyword}{typename} It,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01202}01202 enable\_if\_t, \textcolor{keywordtype}{int}> = 0>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01203}\mbox{\hyperlink{namespacekblib_a73a566130ecb9a7b37b0db0952a53404}{01203}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a07a1e3d300beb263772b5fd079e5d029}{get\_max\_n}}(It first, It last, std::size\_t count,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01204}01204 Comp cmp = \{\}) -\/> SequenceContainer \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01205}01205 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01206}01206 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01207}01207 SequenceContainer c(count);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01208}01208 std::partial\_sort\_copy(first, last, begin(c), end(c),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01209}01209 [\&](\textcolor{keyword}{auto}\&\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{auto}\&\& b) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01210}01210 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(cmp,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01211}01211 std::forward<\textcolor{keyword}{decltype}(b)>(b),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01212}01212 std::forward<\textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}})>(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01213}01213 \});} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01214}01214 \textcolor{keywordflow}{return} c;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01215}01215 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01216}01216 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01228}01228 \textcolor{keyword}{template} <\textcolor{keyword}{typename} SetlikeContainer, \textcolor{keyword}{typename} Comp = std::less<>, \textcolor{keyword}{typename} It,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01229}01229 enable\_if\_t, \textcolor{keywordtype}{int}> = 0>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01230}01230 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a07a1e3d300beb263772b5fd079e5d029}{get\_max\_n}}(It first, It last, std::size\_t count,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01231}01231 Comp cmp = \{\}) -\/> SetlikeContainer \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01232}01232 \textcolor{keyword}{auto} temp = get\_max\_n>>(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01233}01233 first, last, count, cmp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01234}01234 \textcolor{keywordflow}{return} SetlikeContainer\{std::make\_move\_iterator(temp.begin()),} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01235}01235 std::make\_move\_iterator(temp.end())\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01236}01236 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01237}01237 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01255}01255 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Comp = std::less<>, \textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01256}01256 \textcolor{keyword}{typename} Elem = \textcolor{keyword}{typename} std::iterator\_traits::value\_type>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01257}\mbox{\hyperlink{namespacekblib_a07a1e3d300beb263772b5fd079e5d029}{01257}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a07a1e3d300beb263772b5fd079e5d029}{get\_max\_n}}(InputIt first, InputIt last, OutputIt d\_begin,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01258}01258 std::size\_t count, Comp cmp = \{\})} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01259}01259 -\/> \mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{return\_assert\_t}}::value,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01260}01260 OutputIt> \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01261}01261 \textcolor{keyword}{auto} temp = get\_max\_n>(first, last, count, cmp);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01262}01262 \textcolor{keywordflow}{return} std::move(temp.begin(), temp.end(), d\_begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01263}01263 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01264}01264 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01278}01278 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} ForwardIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01279}01279 \textcolor{keyword}{typename} BinaryFunction>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01280}\mbox{\hyperlink{namespacekblib_a5a3199d9020a07ae387f60a6ef61393b}{01280}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a5a3199d9020a07ae387f60a6ef61393b}{for\_each}}(ForwardIt first, EndIt last, ForwardIt2 second,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01281}01281 BinaryFunction f) -\/> BinaryFunction \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01282}01282 \textcolor{keywordflow}{for} (; first != last; (void)++first, (\textcolor{keywordtype}{void})++second) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01283}01283 \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(f, *first, *second);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01284}01284 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01285}01285 \textcolor{keywordflow}{return} std::move(f);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01286}01286 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01287}01287 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01299}01299 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} ForwardIt2, \textcolor{keyword}{typename} Size,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01300}01300 \textcolor{keyword}{typename} BinaryFunction>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01301}\mbox{\hyperlink{namespacekblib_a645d4e1338c54d720c7cb1f8f90a0e59}{01301}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a645d4e1338c54d720c7cb1f8f90a0e59}{for\_each\_n}}(ForwardIt first, Size n, ForwardIt2 second,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01302}01302 BinaryFunction f)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01303}01303 -\/> std::pair \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01304}01304 \textcolor{keywordflow}{for} (Size i = 0; i < n; (void)++first, (\textcolor{keywordtype}{void})++second, (void)++i) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01305}01305 \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(f, *first, *second);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01306}01306 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01307}01307 \textcolor{keywordflow}{return} \{first, second\};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01308}01308 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01309}01309 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01321}01321 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01322}\mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{01322}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(InputIt first, EndIt last, OutputIt out) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01323}01323 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01324}01324 *out++ = *first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01325}01325 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01326}01326 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01327}01327 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01328}01328 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01341}01341 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01342}01342 \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01343}\mbox{\hyperlink{namespacekblib_a5e6f2b40f2b5e649d70df34e5bcc03fe}{01343}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a5e6f2b40f2b5e649d70df34e5bcc03fe}{copy\_if}}(InputIt first, EndIt last, OutputIt out,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01344}01344 UnaryPredicate pred) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01345}01345 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01346}01346 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01347}01347 *out++ = *first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01348}01348 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01349}01349 first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01350}01350 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01351}01351 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01352}01352 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01353}01353 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01364}01364 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} Size, \textcolor{keyword}{typename} OutputIt>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01365}\mbox{\hyperlink{namespacekblib_a428621582602281bc8643b3e6830e2d4}{01365}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a428621582602281bc8643b3e6830e2d4}{copy\_n}}(InputIt first, Size count, OutputIt out) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01366}01366 \textcolor{keywordflow}{for} (Size i = 0; i < count; ++i) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01367}01367 *out++ = *first++;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01368}01368 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01369}01369 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01370}01370 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01371}01371 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01384}01384 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} Size, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01385}01385 \textcolor{keyword}{typename} UnaryPredicate>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01386}\mbox{\hyperlink{namespacekblib_ab3f36a456830c5c88673a6df70828978}{01386}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab3f36a456830c5c88673a6df70828978}{copy\_n\_if}}(InputIt first, Size count, OutputIt out,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01387}01387 UnaryPredicate pred) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01388}01388 \textcolor{keywordflow}{for} (Size i = 0; i < count; ++i) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01389}01389 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01390}01390 *out++ = *first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01391}01391 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01392}01392 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01393}01393 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01394}01394 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01395}01395 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01396}01396 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01411}01411 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01412}01412 \textcolor{keyword}{typename} UnaryPredicate, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01413}\mbox{\hyperlink{namespacekblib_a3a46a1cf64ac97bdc6b5d7fe0571f38f}{01413}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a3a46a1cf64ac97bdc6b5d7fe0571f38f}{replace\_copy\_if}}(InputIt first, EndIt last, OutputIt out,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01414}01414 UnaryPredicate pred, \textcolor{keyword}{const} T\& new\_value)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01415}01415 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01416}01416 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01417}01417 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01418}01418 *out = *first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01419}01419 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01420}01420 *out = new\_value;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01421}01421 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01422}01422 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01423}01423 ++out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01424}01424 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01425}01425 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01426}01426 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01427}01427 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01442}01442 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} Size, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01443}01443 \textcolor{keyword}{typename} UnaryPredicate, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01444}\mbox{\hyperlink{namespacekblib_aaabe9f5328918c0b6e44df29782e7ae1}{01444}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aaabe9f5328918c0b6e44df29782e7ae1}{replace\_copy\_n\_if}}(InputIt first, Size count, OutputIt out,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01445}01445 UnaryPredicate pred, \textcolor{keyword}{const} T\& new\_value)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01446}01446 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01447}01447 \textcolor{keywordflow}{for} (Size i = 0; i < count; ++i) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01448}01448 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01449}01449 *out = *first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01450}01450 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01451}01451 *out = new\_value;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01452}01452 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01453}01453 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01454}01454 ++out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01455}01455 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01456}01456 \textcolor{keywordflow}{return} out;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01457}01457 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01458}01458 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01459}01459 \textcolor{comment}{// TODO(killerbee13): Debug and test search\_replace\_copy}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01460}01460 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt1, \textcolor{keyword}{typename} ForwardIt2, \textcolor{keyword}{typename} ForwardIt3,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01461}01461 \textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} BinaryPredicate = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01462}\mbox{\hyperlink{namespacekblib_ac237e40dd9be6a60c18b9b520b51e111}{01462}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_abffc089ff2fee6d19613dc39cd47cfb5}{search\_replace\_copy}}(ForwardIt1 h\_begin, ForwardIt1 h\_end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01463}01463 ForwardIt2 n\_begin, ForwardIt2 n\_end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01464}01464 ForwardIt3 r\_begin, ForwardIt3 r\_end,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01465}01465 OutputIt d\_begin,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01466}01466 BinaryPredicate Compare = \{\}) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01467}01467 \textcolor{keywordflow}{if} (n\_begin == n\_end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01468}01468 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(h\_begin, h\_end, d\_begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01469}01469 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01470}01470 \textcolor{keyword}{const} \textcolor{keyword}{auto} needle\_length = std::distance(n\_begin, n\_end);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01471}01471 \textcolor{keywordflow}{while} (h\_begin != h\_end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01472}01472 \textcolor{keyword}{const} \textcolor{keyword}{auto} found} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01473}01473 = std::search(h\_begin, h\_end, n\_begin, n\_end, Compare);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01474}01474 d\_begin = \mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{kblib::copy}}(h\_begin, found, d\_begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01475}01475 h\_begin = found;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01476}01476 \textcolor{keywordflow}{if} (h\_begin != h\_end) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01477}01477 d\_begin = \mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(r\_begin, r\_end, d\_begin);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01478}01478 std::advance(h\_begin, needle\_length);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01479}01479 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01480}01480 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01481}01481 \textcolor{keywordflow}{return} d\_begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01482}01482 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01483}01483 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01484}01484 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01485}01485 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Haystack, \textcolor{keyword}{typename} Needle, \textcolor{keyword}{typename} Replacement,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01486}01486 \textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} BinaryPredicate = std::equal\_to<>>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01487}\mbox{\hyperlink{namespacekblib_abffc089ff2fee6d19613dc39cd47cfb5}{01487}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_abffc089ff2fee6d19613dc39cd47cfb5}{search\_replace\_copy}}(Haystack\&\& haystack, Needle\&\& needle,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01488}01488 Replacement\&\& replacement, OutputIt d\_begin,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01489}01489 BinaryPredicate compare = \{\}) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01490}01490 \textcolor{keyword}{using }std::begin;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01491}01491 \textcolor{keyword}{using }std::end;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01492}01492 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_abffc089ff2fee6d19613dc39cd47cfb5}{search\_replace\_copy}}(begin(haystack), end(haystack), \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01493}01493 begin(needle), end(needle), \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01494}01494 begin(replacement), end(replacement), \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01495}01495 d\_begin, \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01496}01496 compare);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01497}01497 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01498}01498 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01508}01508 \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01509}\mbox{\hyperlink{namespacekblib_abe51624618b4a7c9f20e295b8c89bf47}{01509}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_abe51624618b4a7c9f20e295b8c89bf47}{rotate}}(ForwardIt first, ForwardIt n\_first,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01510}01510 ForwardIt last) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(*first, *first)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01511}01511 -\/> ForwardIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01512}01512 \textcolor{keywordflow}{if} (first == n\_first)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01513}01513 \textcolor{keywordflow}{return} last;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01514}01514 \textcolor{keywordflow}{if} (n\_first == last)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01515}01515 \textcolor{keywordflow}{return} first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01516}01516 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01517}01517 ForwardIt read = n\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01518}01518 ForwardIt write = first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01519}01519 ForwardIt next\_read = first; \textcolor{comment}{// read position for when "{}read"{} hits "{}last"{}}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01520}01520 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01521}01521 \textcolor{keywordflow}{while} (read != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01522}01522 \textcolor{keywordflow}{if} (write == next\_read)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01523}01523 next\_read = read; \textcolor{comment}{// track where "{}first"{} went}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01524}01524 \textcolor{comment}{// iter\_swap is not constexpr}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01525}01525 \textcolor{comment}{// std::iter\_swap(write++, read++);}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01526}01526 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(*(write++), *(read++));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01527}01527 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01528}01528 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01529}01529 \textcolor{comment}{// rotate the remaining sequence into place}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01530}01530 \mbox{\hyperlink{namespacekblib_abe51624618b4a7c9f20e295b8c89bf47}{kblib::rotate}}(write, next\_read, last);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01531}01531 \textcolor{keywordflow}{return} write;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01532}01532 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01533}01533 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01544}01544 \textcolor{keyword}{template} <\textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} Generator>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01545}\mbox{\hyperlink{namespacekblib_a33f20e37682017226d1d7a7128915ea5}{01545}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a33f20e37682017226d1d7a7128915ea5}{generate}}(OutputIt first, EndIt last,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01546}01546 Generator g) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*++first = g()))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01547}01547 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01548}01548 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01549}01549 *first = g();} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01550}01550 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01551}01551 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01552}01552 \textcolor{keywordflow}{return} first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01553}01553 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01554}01554 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01564}01564 \textcolor{keyword}{template} <\textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} Size, \textcolor{keyword}{typename} Generator>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01565}\mbox{\hyperlink{namespacekblib_a44de39f5ab34ae1bf5b037eb11155caa}{01565}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a44de39f5ab34ae1bf5b037eb11155caa}{generate\_n}}(OutputIt first, Size count,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01566}01566 Generator g) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*first++ = g()))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01567}01567 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01568}01568 \textcolor{keywordflow}{for} (Size i = 0; i < count; i++) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01569}01569 *first++ = g();} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01570}01570 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01571}01571 \textcolor{keywordflow}{return} first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01572}01572 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01573}01573 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01574}01574 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01575}\mbox{\hyperlink{namespacekblib_a40d0e463984f5ab01f6db106dbad9fb0}{01575}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aae9af72a825beb17613b2754bbaca9cc}{iota}}(ForwardIt first, ForwardIt last, T value) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01576}01576 \textcolor{keyword}{noexcept}(*first++ = value) and \textcolor{keyword}{noexcept}(++value)) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01577}01577 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01578}01578 *first++ = value;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01579}01579 ++value;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01580}01580 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01581}01581 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01582}01582 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01583}01583 \textcolor{comment}{// For some reason these long noexcept specifications really trip}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01584}01584 \textcolor{comment}{// up clang-\/format}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01585}01585 \textcolor{comment}{// clang-\/format off}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01586}01586 \textcolor{keyword}{template} <\textcolor{keyword}{typename} ForwardIt, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} UnaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01587}\mbox{\hyperlink{namespacekblib_aae9af72a825beb17613b2754bbaca9cc}{01587}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aae9af72a825beb17613b2754bbaca9cc}{iota}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01588}01588 ForwardIt first, ForwardIt last, T value,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01589}01589 UnaryOperation unary\_op} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01590}01590 ) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*first++ = value)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01591}01591 and \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(unary\_op,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01592}01592 std::move(value))))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01593}01593 -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01594}01594 \textcolor{comment}{// clang-\/format on}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01595}01595 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01596}01596 *first++ = value;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01597}01597 value = \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(unary\_op, std::move(value));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01598}01598 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01599}01599 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01600}01600 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01601}01601 \textcolor{comment}{// clang-\/format off}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01602}01602 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename}... Params>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01603}\mbox{\hyperlink{namespacekblib_a00c98fe410dfc13b00832ecf0293eac9}{01603}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a00c98fe410dfc13b00832ecf0293eac9}{call\_each}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01604}01604 InputIt first, EndIt last, Params\&\&... params} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01605}01605 ) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(*first++,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01606}01606 std::forward(params)...)))} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01607}01607 -\/> InputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01608}01608 \textcolor{comment}{// clang-\/format on}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01609}01609 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01610}01610 \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(*first++, std::forward(params)...);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01611}01611 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01612}01612 \textcolor{keywordflow}{return} first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01613}01613 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01614}01614 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01630}01630 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01631}01631 \textcolor{keyword}{typename} UnaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01632}\mbox{\hyperlink{namespacekblib_aff53cc55f02129e6192d7a87c7cdf7f0}{01632}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aec3f0154a30d5459c15d1984f137644c}{transform}}(InputIt first, EndIt last, OutputIt d\_first,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01633}01633 UnaryOperation unary\_op) -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01634}01634 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01635}01635 *d\_first++ = \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(unary\_op, *first);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01636}01636 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01637}01637 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01638}01638 \textcolor{keywordflow}{return} d\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01639}01639 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01640}01640 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01657}01657 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} InputIt2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01658}01658 \textcolor{keyword}{typename} OutputIt, \textcolor{keyword}{typename} BinaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01659}\mbox{\hyperlink{namespacekblib_aec3f0154a30d5459c15d1984f137644c}{01659}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aec3f0154a30d5459c15d1984f137644c}{transform}}(InputIt first, EndIt last, InputIt first2,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01660}01660 OutputIt d\_first, BinaryOperation binary\_op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01661}01661 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01662}01662 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01663}01663 *d\_first++ = \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(binary\_op, *first, *first2);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01664}01664 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01665}01665 ++first2;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01666}01666 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01667}01667 \textcolor{keywordflow}{return} d\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01668}01668 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01669}01669 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01688}01688 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt, \textcolor{keyword}{typename} EndIt, \textcolor{keyword}{typename} OutputIt,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01689}01689 \textcolor{keyword}{typename} UnaryPredicate, \textcolor{keyword}{typename} UnaryOperation>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01690}\mbox{\hyperlink{namespacekblib_a09ef1e721a1b15383c199c67339aaa10}{01690}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a09ef1e721a1b15383c199c67339aaa10}{transform\_if}}(InputIt first, EndIt last, OutputIt d\_first,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01691}01691 UnaryPredicate pred, UnaryOperation unary\_op)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01692}01692 -\/> OutputIt \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01693}01693 \textcolor{keywordflow}{while} (first != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01694}01694 \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(pred, *first)) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01695}01695 *d\_first++ = \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(unary\_op, *first);} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01696}01696 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01697}01697 ++first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01698}01698 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01699}01699 \textcolor{keywordflow}{return} d\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01700}01700 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01701}01701 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01702}\mbox{\hyperlink{namespacekblib_1_1detail__algorithm}{01702}} \textcolor{keyword}{namespace }detail\_algorithm \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01703}01703 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01713}01713 \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt>} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01714}\mbox{\hyperlink{namespacekblib_1_1detail__algorithm_a7e9dcc6ba8db08f7ca672ea9f6f20f5a}{01714}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__algorithm_a7e9dcc6ba8db08f7ca672ea9f6f20f5a}{shift\_backward}}(} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01715}01715 ForwardIt first, ForwardIt n\_first,} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01716}01716 ForwardIt last) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(*first = std::move(*first))) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01717}01717 \textcolor{keywordflow}{if} (first == n\_first or n\_first == last)} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01718}01718 \textcolor{keywordflow}{return};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01719}01719 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01720}01720 ForwardIt read = n\_first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01721}01721 ForwardIt write = first;} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01722}01722 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01723}01723 \textcolor{keywordflow}{while} (read != last) \{} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01724}01724 *(write++) = std::move(*(read++));} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01725}01725 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01726}01726 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01727}01727 \textcolor{keywordflow}{return};} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01728}01728 \}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01729}01729 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01730}01730 \} \textcolor{comment}{// namespace detail\_algorithm}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01731}01731 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01732}01732 \} \textcolor{comment}{// namespace KBLIB\_NS}} \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01733}01733 } \DoxyCodeLine{\Hypertarget{algorithm_8h_source_l01734}01734 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// ALGORITHM\_H}} \end{DoxyCode}