\hypertarget{enumerate-contrib-tw_8h_source}{}\doxysection{enumerate-\/contrib-\/tw.h} \label{enumerate-contrib-tw_8h_source}\index{kblib/enumerate-\/contrib-\/tw.h@{kblib/enumerate-\/contrib-\/tw.h}} \mbox{\hyperlink{enumerate-contrib-tw_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00001}00001 \textcolor{comment}{/*}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00002}00002 \textcolor{comment}{ * MIT License}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00003}00003 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2018 Tobias Widlund}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00005}00005 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00006}00006 \textcolor{comment}{ * Permission is hereby granted, free of charge, to any person obtaining a copy}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00007}00007 \textcolor{comment}{ * of this software and associated documentation files (the "{}Software"{}), to deal}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00008}00008 \textcolor{comment}{ * in the Software without restriction, including without limitation the rights}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00009}00009 \textcolor{comment}{ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00010}00010 \textcolor{comment}{ * copies of the Software, and to permit persons to whom the Software is}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00011}00011 \textcolor{comment}{ * furnished to do so, subject to the following conditions:}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00012}00012 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00013}00013 \textcolor{comment}{ * The above copyright notice and this permission notice shall be included in}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00014}00014 \textcolor{comment}{ * all copies or substantial portions of the Software.}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00015}00015 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00016}00016 \textcolor{comment}{ * THE SOFTWARE IS PROVIDED "{}AS IS"{}, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00017}00017 \textcolor{comment}{ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00018}00018 \textcolor{comment}{ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00019}00019 \textcolor{comment}{ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00020}00020 \textcolor{comment}{ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00021}00021 \textcolor{comment}{ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00022}00022 \textcolor{comment}{ * SOFTWARE.}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00023}00023 \textcolor{comment}{ */}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00024}00024 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00025}00025 \textcolor{preprocessor}{\#ifndef ENUMERATECONTRIBTW\_H}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00026}00026 \textcolor{preprocessor}{\#define ENUMERATECONTRIBTW\_H}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00027}00027 \textcolor{comment}{// Original source available at https://github.com/therocode/enumerate}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00028}00028 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00029}00029 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00030}00030 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00031}00031 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00032}00032 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00033}00033 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00034}00034 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00035}00035 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00043}00043 \textcolor{keyword}{template} <\textcolor{keyword}{typename} It>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00044}\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{00044}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00045}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a2c35d1ab443f97050db5562618f3b54c}{00045}} It \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a2c35d1ab443f97050db5562618f3b54c}{it}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00046}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a7dc02d05306b9fe67530402a32e510a7}{00046}} std::size\_t \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a7dc02d05306b9fe67530402a32e510a7}{idx}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00047}00047 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00048}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_adf13e295d4abc1a5f9f4dda002bd9052}{00048}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_adf13e295d4abc1a5f9f4dda002bd9052}{nested\_reference}} = \textcolor{keyword}{typename} std::iterator\_traits::reference;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00049}00049 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00050}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a03dcab718668e4a38c4a613ce3468cec}{00050}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a03dcab718668e4a38c4a613ce3468cec}{difference\_type}} = std::ptrdiff\_t;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00051}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_abffc507754a08437dc1bdf5804d6c135}{00051}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_abffc507754a08437dc1bdf5804d6c135}{value\_type}} = std::pair;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00052}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ac6635496139df41fcd6b6fe4f5c0bfb4}{00052}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ac6635496139df41fcd6b6fe4f5c0bfb4}{pointer}} = void;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00053}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ab8d076df554ca67edb66093ecb7e59f4}{00053}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ab8d076df554ca67edb66093ecb7e59f4}{reference}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator_abffc507754a08437dc1bdf5804d6c135}{value\_type}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00054}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_af4eacc675cb4ec0cc8192adf2256d5c1}{00054}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator_af4eacc675cb4ec0cc8192adf2256d5c1}{iterator\_category}} = std::input\_iterator\_tag;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00055}00055 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00056}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a949e76bb34d8cb5b6e54322c4e614869}{00056}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a949e76bb34d8cb5b6e54322c4e614869}{operator*}}() -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator_abffc507754a08437dc1bdf5804d6c135}{value\_type}} \{ \textcolor{keywordflow}{return} \{*it, idx\}; \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00057}00057 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00058}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a091ecbefde564ee53b06bc07111ace1d}{00058}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a091ecbefde564ee53b06bc07111ace1d}{operator++}}() \& -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}}\& \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00059}00059 ++it;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00060}00060 ++idx;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00061}00061 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00062}00062 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00063}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a85218257b599520550f70d7a9cc8c66b}{00063}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a85218257b599520550f70d7a9cc8c66b}{operator++}}(\textcolor{keywordtype}{int}) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00064}00064 \textcolor{keyword}{auto} tmp = *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00065}00065 ++(*this);} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00066}00066 \textcolor{keywordflow}{return} tmp;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00067}00067 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00068}00068 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00069}00069 \textcolor{keyword}{template} <\textcolor{keyword}{typename} OIt>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00070}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a07a52856b52d95fff2ebf088becfda3c}{00070}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a07a52856b52d95fff2ebf088becfda3c}{operator==}}(OIt rhs)} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00071}00071 -\/> \textcolor{keyword}{decltype}(std::declval() == std::declval()) \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00072}00072 \textcolor{keywordflow}{return} it == rhs;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00073}00073 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00074}00074 \textcolor{keyword}{template} <\textcolor{keyword}{typename} OIt>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00075}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ab5b3bffc48d6e54ab6b8624c93551929}{00075}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_ab5b3bffc48d6e54ab6b8624c93551929}{operator!=}}(OIt rhs)} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00076}00076 -\/> \textcolor{keyword}{decltype}(std::declval() != std::declval()) \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00077}00077 \textcolor{keywordflow}{return} it != rhs;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00078}00078 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00079}00079 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00080}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_a8a930c10e46b2c406d3f8472b0ec1f36}{00080}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_a8a930c10e46b2c406d3f8472b0ec1f36}{operator==}}(\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} lhs,} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00081}00081 \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00082}00082 \textcolor{keywordflow}{return} lhs.it == rhs.it;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00083}00083 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00084}\mbox{\hyperlink{structkblib_1_1enumerate__iterator_ac792c9de77f4fee5c85194b1e9f28d0b}{00084}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__iterator_ac792c9de77f4fee5c85194b1e9f28d0b}{operator!=}}(\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} lhs,} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00085}00085 \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}} rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00086}00086 \textcolor{keywordflow}{return} lhs.it != rhs.it;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00087}00087 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00088}00088 \};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00089}00089 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00090}00090 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00091}00091 \textcolor{keyword}{struct }enumerate\_t;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00092}00092 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00100}00100 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00101}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4}{00101}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1enumerate__t}{enumerate\_t}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00102}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_ae19fbdea36ebecfabb6a146a3813f020}{00102}} \mbox{\hyperlink{namespacekblib_1_1detail_aca9cd901eb773c411961ea11739f3d40}{detail::no\_dangle\_t}} \mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_ae19fbdea36ebecfabb6a146a3813f020}{r}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00103}00103 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00104}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_ad2c1cde392c03173c3cdd6b26970a965}{00104}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_ad2c1cde392c03173c3cdd6b26970a965}{range\_t}} = \textcolor{keyword}{typename} std::remove\_reference\_t;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00105}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a3c2ee598b8f601b5254f0ceaa9d6bf5f}{00105}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a3c2ee598b8f601b5254f0ceaa9d6bf5f}{nested\_iterator}} = \textcolor{keyword}{decltype}(r.begin());} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00106}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a0ed0a825fe34005017ecaa322409b653}{00106}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a0ed0a825fe34005017ecaa322409b653}{nested\_end\_iterator}} = \textcolor{keyword}{decltype}(r.end());} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00107}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a4ad1793a529f0b95ae227fbd5466a641}{00107}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{iterator}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00108}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a6cfb32170b75e73e5bf2f3cef21a3415}{00108}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{end\_iterator}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00109}00109 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00110}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a4c883faeb2db2d554f58371a4e0ad2c3}{00110}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a4c883faeb2db2d554f58371a4e0ad2c3}{nested\_const\_iterator}} = \textcolor{keyword}{typename} range\_t::const\_iterator;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00111}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a02c6424a7958cdb5068bafdce4d49bf7}{00111}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{const\_iterator}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00112}00112 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00113}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a9b59ebe1661222816bfbe1faea2f8f75}{00113}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a9b59ebe1661222816bfbe1faea2f8f75}{begin}}() const\& noexcept(noexcept(r.cbegin()))} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00114}00114 -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{const\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00115}00115 \textcolor{keywordflow}{return} \{r.cbegin(), 0\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00116}00116 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00117}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a67dc8e7927dda08a25b5e61323780b88}{00117}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a67dc8e7927dda08a25b5e61323780b88}{begin}}() \& \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(r.begin())) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00118}00118 \textcolor{keywordflow}{return} \{r.begin(), 0\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00119}00119 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00120}00120 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00121}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a01433e2fb1737dca5a257ae2929536da}{00121}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_a01433e2fb1737dca5a257ae2929536da}{end}}() const\& noexcept(noexcept(r.cend())) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{const\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00122}00122 \textcolor{keywordflow}{return} \{r.cend(), -\/std::size\_t\{1\}\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00123}00123 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00124}\mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_adfce2fd0ecef438641323983364cfbd6}{00124}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_3_01_range_00_01void_01_4_adfce2fd0ecef438641323983364cfbd6}{end}}() \& \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(r.end())) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{end\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00125}00125 \textcolor{keywordflow}{return} \{r.end(), -\/std::size\_t\{1\}\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00126}00126 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00127}00127 \};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00128}00128 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00136}00136 \textcolor{keyword}{template} <\textcolor{keyword}{typename} It, \textcolor{keyword}{typename} EndIt>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00137}\mbox{\hyperlink{structkblib_1_1enumerate__t}{00137}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1enumerate__t}{enumerate\_t}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00138}\mbox{\hyperlink{structkblib_1_1enumerate__t_a039c51e4a107cf06124380877a1ed9f2}{00138}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__t_a039c51e4a107cf06124380877a1ed9f2}{nested\_iterator}} = It;} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00139}\mbox{\hyperlink{structkblib_1_1enumerate__t_aa715d92ec78ca46dd9246f8bb8b22705}{00139}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{iterator}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00140}\mbox{\hyperlink{structkblib_1_1enumerate__t_ae1fdfebea9c26014eb1cdead584bff9f}{00140}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1enumerate__iterator}{end\_iterator}} = \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{enumerate\_iterator}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00141}00141 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00142}\mbox{\hyperlink{structkblib_1_1enumerate__t_adf78adb2096ce9262f453f2343c60a2d}{00142}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_adf78adb2096ce9262f453f2343c60a2d}{begin}}() const\& noexcept -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{iterator}} \{ \textcolor{keywordflow}{return} \{r\_begin, 0\}; \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00143}00143 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00144}\mbox{\hyperlink{structkblib_1_1enumerate__t_a0d3cd18f6c492e8ab86fa24fa5e8b297}{00144}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1enumerate__t_a0d3cd18f6c492e8ab86fa24fa5e8b297}{end}}() const\& noexcept -\/> \mbox{\hyperlink{structkblib_1_1enumerate__iterator}{end\_iterator}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00145}00145 \textcolor{keywordflow}{return} \{r\_end, -\/std::size\_t\{1\}\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00146}00146 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00147}00147 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00148}\mbox{\hyperlink{structkblib_1_1enumerate__t_a16d184c250bbf05324ef2a6b9d1d3660}{00148}} It \mbox{\hyperlink{structkblib_1_1enumerate__t_a16d184c250bbf05324ef2a6b9d1d3660}{r\_begin}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00149}\mbox{\hyperlink{structkblib_1_1enumerate__t_ae565b412cf0b03a7f951aff15afd6df3}{00149}} EndIt \mbox{\hyperlink{structkblib_1_1enumerate__t_ae565b412cf0b03a7f951aff15afd6df3}{r\_end}};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00150}00150 \};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00151}00151 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00158}00158 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Range>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00159}\mbox{\hyperlink{namespacekblib_af60faf67d8fc0ac030f8a2cb27514eed}{00159}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a30574c8277c857984a6b967918ace252}{enumerate}}(Range\&\& r) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__t}{enumerate\_t}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00160}00160 \textcolor{keywordflow}{return} \{std::forward(r)\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00161}00161 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00162}00162 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00168}00168 \textcolor{keyword}{template} <\textcolor{keyword}{typename} It, \textcolor{keyword}{typename} EIt>} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00169}\mbox{\hyperlink{namespacekblib_a30574c8277c857984a6b967918ace252}{00169}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a30574c8277c857984a6b967918ace252}{enumerate}}(It begin, EIt end) -\/> \mbox{\hyperlink{structkblib_1_1enumerate__t}{enumerate\_t}} \{} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00170}00170 \textcolor{keywordflow}{return} \{begin, end\};} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00171}00171 \}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00172}00172 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00173}00173 \} \textcolor{comment}{// namespace KBLIB\_NS}} \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00174}00174 } \DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00175}00175 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// ENUMERATECONTRIBTW\_H}} \end{DoxyCode}