\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 <iterator>}}
\DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00032}00032 \textcolor{preprocessor}{\#include <utility>}}
\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<It>::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<nested\_reference, std::size\_t>;}
\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<It\&>() == std::declval<OIt\&>()) \{}
\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<It\&>() != std::declval<OIt\&>()) \{}
\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}}<Range, void> \{}
\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<Range>}} \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<Range>;}
\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<nested\_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<nested\_end\_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<nested\_const\_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<nested\_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<EndIt>}};}
\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<Range\&\&>}} \{}
\DoxyCodeLine{\Hypertarget{enumerate-contrib-tw_8h_source_l00160}00160    \textcolor{keywordflow}{return} \{std::forward<Range>(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<It, EIt>}} \{}
\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}
