\hypertarget{containers_8h_source}{}\doxysection{containers.\+h}
\label{containers_8h_source}\index{kblib/containers.h@{kblib/containers.h}}
\mbox{\hyperlink{containers_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00004}00004 \textcolor{comment}{ * things.}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00005}00005 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00017}00017 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00019}00019 \textcolor{comment}{ * along with this program.  If not, see <https://www.gnu.org/licenses/>.}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00021}00021 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00031}00031 \textcolor{preprocessor}{\#ifndef KBLIB\_CONTAINERS\_H}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00032}00032 \textcolor{preprocessor}{\#define KBLIB\_CONTAINERS\_H}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00034}00034 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{fakestd_8h}{fakestd.h}}"{}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00035}00035 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{iterators_8h}{iterators.h}}"{}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00036}00036 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00037}00037 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{traits_8h}{traits.h}}"{}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00039}00039 \textcolor{preprocessor}{\#include <cstddef>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00040}00040 \textcolor{preprocessor}{\#include <deque>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00041}00041 \textcolor{preprocessor}{\#include <iterator>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00042}00042 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00043}00043 \textcolor{preprocessor}{\#include <stack>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00044}00044 \textcolor{preprocessor}{\#include <type\_traits>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00045}00045 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00047}00047 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00048}00048 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00049}00049 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00050}\mbox{\hyperlink{namespacekblib_ad505bc6a8318d39ac08f85bf9a8cddbb}{00050}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ad505bc6a8318d39ac08f85bf9a8cddbb}{pop}}(C\& s) -\/> \textcolor{keyword}{typename} C::value\_type \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00051}00051    \textcolor{keyword}{typename} C::value\_type ret = std::move(s.top());}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00052}00052    s.pop();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00053}00053    \textcolor{keywordflow}{return} ret;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00054}00054 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00056}00056 \textcolor{keyword}{template} <\textcolor{keyword}{class} C, \textcolor{keyword}{typename} K, \textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00057}\mbox{\hyperlink{namespacekblib_a255d018d13394a47c014b2929a35a3b5}{00057}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a255d018d13394a47c014b2929a35a3b5}{get\_or}}(\textcolor{keyword}{const} C\& m, \textcolor{keyword}{const} K\& key, \textcolor{keyword}{const} V\& defval)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00058}00058     -\/> \textcolor{keyword}{typename} C::mapped\_type \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00059}00059    \textcolor{keyword}{auto} it = m.find(key);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00060}00060    \textcolor{keywordflow}{if} (it == m.end())}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00061}00061       \textcolor{keywordflow}{return} defval;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00062}00062    \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00063}00063       \textcolor{keywordflow}{return} it-\/>second;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00064}00064 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00066}00066 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Map, \textcolor{keyword}{typename} Key>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00067}\mbox{\hyperlink{namespacekblib_ac2b7bd4d50cea42484b9824a8140602f}{00067}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ac2b7bd4d50cea42484b9824a8140602f}{try\_get}}(Map\& \mbox{\hyperlink{namespacekblib_a1490492d82c28f195f0f44a9d88fb2cc}{map}}, Key\&\& key)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00068}00068     -\/> \mbox{\hyperlink{namespacekblib_af973fdd9c2dddf6db3744ae83902fc72}{copy\_const\_t<Map, typename Map::mapped\_type>}}* \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00069}00069    \textcolor{keyword}{auto} it = \mbox{\hyperlink{namespacekblib_a1490492d82c28f195f0f44a9d88fb2cc}{map}}.find(std::forward<Key>(key));}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00070}00070    \textcolor{keywordflow}{if} (it == \mbox{\hyperlink{namespacekblib_a1490492d82c28f195f0f44a9d88fb2cc}{map}}.end())}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00071}00071       \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00072}00072    \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00073}00073       \textcolor{keywordflow}{return} \&it-\/>second;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00074}00074 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00076}00076 \textcolor{keyword}{template} <\textcolor{keyword}{typename} iterator>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00077}\mbox{\hyperlink{structkblib_1_1exists__t}{00077}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1exists__t}{exists\_t}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00078}\mbox{\hyperlink{structkblib_1_1exists__t_a244ab890520561a3998929af9321bb91}{00078}}    iterator \mbox{\hyperlink{structkblib_1_1exists__t_a244ab890520561a3998929af9321bb91}{it}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00079}\mbox{\hyperlink{structkblib_1_1exists__t_a1fe015ac8a519ced59295ade643c0f18}{00079}}    \textcolor{keywordtype}{bool} \mbox{\hyperlink{structkblib_1_1exists__t_a1fe015ac8a519ced59295ade643c0f18}{found}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00080}\mbox{\hyperlink{structkblib_1_1exists__t_ac386c1b66b8aaa1b91141ec790c74fe9}{00080}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{operator} bool() const noexcept \{ \textcolor{keywordflow}{return} found; \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00081}\mbox{\hyperlink{structkblib_1_1exists__t_ad0f2f995710ab158bd0f3eb2cbf04ddd}{00081}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1exists__t_ad0f2f995710ab158bd0f3eb2cbf04ddd}{operator*}}() const noexcept(noexcept(*it))}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00082}00082        -\/> decltype(*it) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00083}00083       \textcolor{keywordflow}{return} *it;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00084}00084    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00085}\mbox{\hyperlink{structkblib_1_1exists__t_a2a1c3f76ad75e23d8d50f42b9de995ea}{00085}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1exists__t_a2a1c3f76ad75e23d8d50f42b9de995ea}{operator-\/>}}() const noexcept -\/> iterator \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00086}00086       \textcolor{keywordflow}{return} it;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00087}00087    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00088}\mbox{\hyperlink{structkblib_1_1exists__t_a7130663b90f07118de2b49e5b126317f}{00088}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1exists__t_a7130663b90f07118de2b49e5b126317f}{addr}}() const noexcept -\/> auto* \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00089}00089       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a1c2aa67048789f77bea56734a583d3d1}{to\_pointer}}(it);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00090}00090    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00091}00091 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00093}00093 \textcolor{keyword}{template} <\textcolor{keyword}{typename} M, \textcolor{keyword}{typename} K>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00094}\mbox{\hyperlink{namespacekblib_ae0ceac8ca285d73c019ff7822c3a89d3}{00094}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae0ceac8ca285d73c019ff7822c3a89d3}{get\_check}}(M\&\& m, \textcolor{keyword}{const} K\& key) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00095}00095     \textcolor{keyword}{noexcept}(m.find(key) != m.end())) -\/> \mbox{\hyperlink{structkblib_1_1exists__t}{exists\_t}}<\textcolor{keyword}{decltype}(m.find(key))> \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00096}00096    \textcolor{keyword}{auto} it = m.find(key);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00097}00097    \textcolor{keywordflow}{return} \{it, it != m.end()\};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00098}00098 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00099}00099 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00115}00115 \textcolor{keyword}{template} <\textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00116}\mbox{\hyperlink{namespacekblib_a0796644f9c5f55c99e916160cc085319}{00116}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0796644f9c5f55c99e916160cc085319}{force\_shrink\_to\_fit}}(V\& vec) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00117}00117    \textcolor{keywordflow}{if} (std::is\_nothrow\_move\_constructible<typename V::value\_type>::value) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00118}00118       V tmp;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00119}00119       \mbox{\hyperlink{namespacekblib_a7035cf97e9bcba5add3b1462ac01a0ed}{try\_reserve}}(tmp, vec.size());}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00120}00120       std::move(vec.begin(), vec.end(), std::back\_inserter(tmp));}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00121}00121       vec = std::move(tmp);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00122}00122    \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00123}00123       V tmp(vec.begin(), vec.end());}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00124}00124       vec = std::move(tmp);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00125}00125    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00126}00126    \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00127}00127 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00128}00128 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00129}00129 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, std::\textcolor{keywordtype}{size\_t} size>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00130}\mbox{\hyperlink{structkblib_1_1construct__with__size}{00130}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1construct__with__size}{construct\_with\_size}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00131}\mbox{\hyperlink{structkblib_1_1construct__with__size_a7992ec30d5d631dcc1aeb8f2f9ed5cff}{00131}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1construct__with__size_a7992ec30d5d631dcc1aeb8f2f9ed5cff}{make}}() -\/> C \{ \textcolor{keywordflow}{return} C(\mbox{\hyperlink{namespacekblib_1_1fakestd_adb8781bc0e5d1ba4ca4624293c0c98ae}{size}}); \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00132}00132 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00133}00133 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00134}00134 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, std::\textcolor{keywordtype}{size\_t} size>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00135}\mbox{\hyperlink{structkblib_1_1construct__with__capacity}{00135}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1construct__with__capacity}{construct\_with\_capacity}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00136}\mbox{\hyperlink{structkblib_1_1construct__with__capacity_ae110cab034bbb6f0f6ccd4e7a02eb18c}{00136}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1construct__with__capacity_ae110cab034bbb6f0f6ccd4e7a02eb18c}{make}}() -\/> C \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00137}00137       C c;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00138}00138       c.reserve(\mbox{\hyperlink{namespacekblib_1_1fakestd_adb8781bc0e5d1ba4ca4624293c0c98ae}{size}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00139}00139       \textcolor{keywordflow}{return} c;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00140}00140    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00141}00141 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00142}00142 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00151}00151 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keyword}{typename} Range>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00152}\mbox{\hyperlink{namespacekblib_a639f719064a3ea44cd586faac94ac012}{00152}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a639f719064a3ea44cd586faac94ac012}{construct\_from\_range}}(Range\&\& r) -\/> Container \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00153}00153    \textcolor{keyword}{using }std::begin;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00154}00154    \textcolor{keyword}{using }std::end;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00155}00155    \textcolor{keywordflow}{return} Container\{begin(std::forward<Range>(r)), end(std::forward<Range>(r))\};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00156}00156 \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00157}00157 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00158}00158 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keywordtype}{bool} ArrayLike = not is\_resizable\_v<Container>>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00159}\mbox{\hyperlink{classkblib_1_1build__iterator}{00159}} \textcolor{keyword}{class }\mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00160}00160  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00169}00169    std::shared\_ptr<Container> \mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00170}00170 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00171}00171  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00172}\mbox{\hyperlink{classkblib_1_1build__iterator_ab56e6b08f256ddf9124636564dc58076}{00172}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_ab56e6b08f256ddf9124636564dc58076}{value\_type}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00173}\mbox{\hyperlink{classkblib_1_1build__iterator_aee4a0cdaba9a97c37f230554b5ffaf73}{00173}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_aee4a0cdaba9a97c37f230554b5ffaf73}{difference\_type}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00174}\mbox{\hyperlink{classkblib_1_1build__iterator_a6af345196ef4f776cc5547b55a5f62f5}{00174}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_a6af345196ef4f776cc5547b55a5f62f5}{pointer}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00175}\mbox{\hyperlink{classkblib_1_1build__iterator_a53aad900c0e99cf55161587f025e3c1c}{00175}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_a53aad900c0e99cf55161587f025e3c1c}{reference}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00176}\mbox{\hyperlink{classkblib_1_1build__iterator_ad2e301109fe1cb7638490c5f4f937d5a}{00176}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_ad2e301109fe1cb7638490c5f4f937d5a}{iterator\_category}} = std::output\_iterator\_tag;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00178}00178    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00179}\mbox{\hyperlink{classkblib_1_1build__iterator_a24d15ed80b5d930dafdc35969204540c}{00179}}    \mbox{\hyperlink{classkblib_1_1build__iterator_a24d15ed80b5d930dafdc35969204540c}{build\_iterator}}(Args\&\&... args)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00180}00180        : \mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}}(\mbox{\hyperlink{namespacestd}{std}}::make\_shared<Container>(\mbox{\hyperlink{namespacestd}{std}}::forward<Args>(args)...)) \{\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00181}00181 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00182}\mbox{\hyperlink{classkblib_1_1build__iterator_a2930cc685ac6fdf78f9088d7bcba1fbb}{00182}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_a2930cc685ac6fdf78f9088d7bcba1fbb}{base}}() noexcept(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00183}00183        \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible<Container>::value) -\/> Container \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00184}00184       \textcolor{keyword}{auto} holder = std::move(\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00185}00185       \textcolor{keywordflow}{return} std::move(*holder);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00186}00186    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00187}00187 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00188}\mbox{\hyperlink{classkblib_1_1build__iterator_a5a549199525bc0ce5954089c306dee1c}{00188}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} Container() noexcept(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00189}00189        \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible<Container>::value) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00190}00190       \textcolor{keyword}{auto} holder = std::move(\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00191}00191       \textcolor{keywordflow}{return} std::move(*holder);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00192}00192    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00193}00193 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00202}\mbox{\hyperlink{classkblib_1_1build__iterator_a855732e11438296015cafea15d75c254}{00202}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_a855732e11438296015cafea15d75c254}{operator*}}() const}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00203}00203        noexcept(noexcept(*\mbox{\hyperlink{namespacestd}{std}}::back\_inserter(*\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}}))) -\/> decltype(auto) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00204}00204       \textcolor{keywordflow}{return} std::back\_inserter(*\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00205}00205    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00206}00206 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00210}\mbox{\hyperlink{classkblib_1_1build__iterator_a78a9678c76e68920f257b77cbac080ed}{00210}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_a78a9678c76e68920f257b77cbac080ed}{operator++}}() -\/> \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00211}00211       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00212}00212    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00216}\mbox{\hyperlink{classkblib_1_1build__iterator_a16f1368e6826a652794f6f1588751559}{00216}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_a16f1368e6826a652794f6f1588751559}{operator++}}(\textcolor{keywordtype}{int}) -\/> \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00217}00217       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00218}00218    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00219}00219 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00220}00220 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00221}\mbox{\hyperlink{structkblib_1_1build__end__t}{00221}} \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{constexpr} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00222}00222    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00223}\mbox{\hyperlink{structkblib_1_1build__end__t_a616a0cf2088bbb656ba7611b8c641a35}{00223}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{operator} T() const}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00224}00224        noexcept(noexcept(T\{std::declval<build\_end\_t\&>()\})) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00225}00225       \textcolor{keywordflow}{return} T\{\textcolor{keyword}{this}\};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00226}00226    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00227}\mbox{\hyperlink{namespacekblib_aad99c3a2af651595f17e2c95c2c521d4}{00227}} \} \mbox{\hyperlink{namespacekblib_aad99c3a2af651595f17e2c95c2c521d4}{build\_end}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00228}00228 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00229}00229 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00230}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4}{00230}} \textcolor{keyword}{class }\mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}<Container, true> \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00231}00231  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00232}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a59c1ba756be964e341af703c8729b2ce}{00232}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a59c1ba756be964e341af703c8729b2ce}{value\_type}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00233}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ae402fbb44a4abb3c1c91e4009e7bd440}{00233}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ae402fbb44a4abb3c1c91e4009e7bd440}{difference\_type}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00234}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ace43efd795dcab649ea349752612f451}{00234}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ace43efd795dcab649ea349752612f451}{pointer}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00235}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a86fdee754f37159de8f87ccdf420e792}{00235}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a86fdee754f37159de8f87ccdf420e792}{reference}} = void;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00236}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_adc478792e5e3b2465e9d28d925220c23}{00236}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_adc478792e5e3b2465e9d28d925220c23}{iterator\_category}} = std::output\_iterator\_tag;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00237}00237 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00238}00238    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00239}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a2fdf7ea3189fcbe387bd6e06a060916f}{00239}}    \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a2fdf7ea3189fcbe387bd6e06a060916f}{build\_iterator}}(Args\&\&... args)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00240}00240        : \mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}}(\mbox{\hyperlink{namespacestd}{std}}::make\_shared<Container>(\mbox{\hyperlink{namespacestd}{std}}::forward<Args>(args)...)) \{\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00241}00241 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00242}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a3709ff910e3049977cac7fea91b3cc17}{00242}}    \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a3709ff910e3049977cac7fea91b3cc17}{build\_iterator}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}}\&)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00243}00243        : \mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}}\{nullptr\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00244}00244        , index(\mbox{\hyperlink{namespacestd}{std}}::tuple\_size<Container>::value) \{\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00245}00245 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00246}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a050eb1465a60d1da2ecb966ee90e594c}{00246}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a050eb1465a60d1da2ecb966ee90e594c}{base}}() noexcept(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00247}00247        \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible<Container>::value) -\/> Container \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00248}00248       \textcolor{keyword}{auto} holder = std::move(\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00249}00249       \textcolor{keywordflow}{return} std::move(*holder);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00250}00250    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00252}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ada0894dbe3872a20b53cc70a15ccefa6}{00252}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} Container() noexcept(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00253}00253        \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible<Container>::value) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00254}00254       \textcolor{keyword}{auto} holder = std::move(\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00255}00255       \textcolor{keywordflow}{return} std::move(*holder);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00256}00256    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00257}00257 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00258}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a31efb1d69993f131727eab07df983070}{00258}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a31efb1d69993f131727eab07df983070}{operator*}}() const noexcept -\/> decltype(auto) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00259}00259       \textcolor{keywordflow}{return} (*\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}})[index];}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00260}00260    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00261}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ada029d9f0bf9788b241fe7e0f7357ffe}{00261}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_ada029d9f0bf9788b241fe7e0f7357ffe}{operator-\/>}}() const noexcept -\/> auto* \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00262}00262       \textcolor{keywordflow}{return} \&(*range)[index];}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00263}00263    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00264}00264 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00268}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a61bca9f9c68f77f457dd37ae98ba6fd2}{00268}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a61bca9f9c68f77f457dd37ae98ba6fd2}{operator++}}() -\/> \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00269}00269       ++index;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00270}00270       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00271}00271    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00275}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a11f3a7d4d17201c5fe0f37311a161a60}{00275}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a11f3a7d4d17201c5fe0f37311a161a60}{operator++}}(\textcolor{keywordtype}{int}) -\/> \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00276}00276       \textcolor{keyword}{auto} tmp = *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00277}00277       ++index;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00278}00278       \textcolor{keywordflow}{return} tmp;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00279}00279    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00280}00280 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00281}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a45674134dae4f9f88c7806666472556a}{00281}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a45674134dae4f9f88c7806666472556a}{size}}() const noexcept -\/> \mbox{\hyperlink{namespacestd}{std}}::\textcolor{keywordtype}{size\_t} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00282}00282       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{kblib::size}}(*\mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00283}00283    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00284}00284 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00285}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a638f41a7a84d827e6ef04284627ba7e0}{00285}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a638f41a7a84d827e6ef04284627ba7e0}{operator==}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00286}00286        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it, \mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}}) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00287}00287       \textcolor{keywordflow}{return} it.index == it.size();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00288}00288    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00289}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a483f436d4fdc05cef812500068bd09f9}{00289}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a483f436d4fdc05cef812500068bd09f9}{operator!=}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00290}00290        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it, \mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}}) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00291}00291       \textcolor{keywordflow}{return} it.index != it.size();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00292}00292    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00293}00293 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00294}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a5ac88fec1732fb84fc77b114f2e5f3ba}{00294}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a5ac88fec1732fb84fc77b114f2e5f3ba}{operator==}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00295}00295        \mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}}, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00296}00296       \textcolor{keywordflow}{return} it.index == it.size();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00297}00297    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00298}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_adaeea21d18f85d98eb4782f09bcc249d}{00298}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_adaeea21d18f85d98eb4782f09bcc249d}{operator!=}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00299}00299        \mbox{\hyperlink{structkblib_1_1build__end__t}{build\_end\_t}}, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00300}00300       \textcolor{keywordflow}{return} it.index != it.size();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00301}00301    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00302}00302 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00303}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a6b51d7e5e653f0fdaaa6abad5aeaa753}{00303}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a6b51d7e5e653f0fdaaa6abad5aeaa753}{operator==}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00304}00304        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it1,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00305}00305        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it2) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00306}00306       \textcolor{keywordflow}{return} it1.index == it2.index;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00307}00307    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00308}\mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a2f7f9e9fac9aec921bdf2a8e152196a6}{00308}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1build__iterator_3_01_container_00_01true_01_4_a2f7f9e9fac9aec921bdf2a8e152196a6}{operator!=}}(}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00309}00309        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it1,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00310}00310        \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator<Container>}}\& it2) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00311}00311       \textcolor{keywordflow}{return} it1.index != it2.index;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00312}00312    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00313}00313 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00314}00314  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00323}00323    std::shared\_ptr<Container> \mbox{\hyperlink{namespacekblib_a72690688922a2d4ae9a3e46ff0c1a9a9}{range}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00324}00324    std::size\_t index\{\};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00325}00325 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00326}00326 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00327}00327 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00328}00328 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00329}00329 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacestd}{std}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00330}00330 \textcolor{preprocessor}{\#if defined(\_\_clang\_\_)}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00331}00331 \textcolor{comment}{// Because apparently -\/Wno-\/mismatched-\/tags doesn't work}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00332}00332 \textcolor{preprocessor}{\#  pragma clang diagnostic push}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00333}00333 \textcolor{preprocessor}{\#  pragma clang diagnostic ignored "{}-\/Wmismatched-\/tags"{}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00334}00334 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00336}00336 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, std::\textcolor{keywordtype}{size\_t} Size>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00337}\mbox{\hyperlink{structstd_1_1tuple__size_3_1_1kblib_1_1construct__with__size_3_01_c_00_01_size_01_4_01_4}{00337}} \textcolor{keyword}{struct }tuple\_size<::\mbox{\hyperlink{structkblib_1_1construct__with__size}{kblib::construct\_with\_size}}<C, Size>>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00338}00338     : \textcolor{keyword}{public} integral\_constant<size\_t, Size> \{\};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00339}00339 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00340}00340 \textcolor{preprocessor}{\#if defined(\_\_clang\_\_)}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00341}00341 \textcolor{preprocessor}{\#  pragma clang diagnostic pop}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00342}00342 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00343}00343 \} \textcolor{comment}{// namespace std}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00344}00344 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00345}00345 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00346}00346 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00347}00347 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00348}00348    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00349}\mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl_3_01construct__with__size_3_01_container_00_01_n_01_4_00_01false_01_4}{00349}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl}{buildiota\_impl}}<\mbox{\hyperlink{structkblib_1_1construct__with__size}{construct\_with\_size}}<Container, N>, false> \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00350}00350       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00351}\mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl_3_01construct__with__size_3_01_container_00_01_n_01_4_00_01false_01_4_a4a3593f4e792e803ac3ca4353e6120da}{00351}}       \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl_3_01construct__with__size_3_01_container_00_01_n_01_4_00_01false_01_4_a4a3593f4e792e803ac3ca4353e6120da}{impl}}(T \mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}}) -\/> Container \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00352}00352          Container out = \mbox{\hyperlink{structkblib_1_1construct__with__size}{construct\_with\_size<Container, N>::make}}();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00353}00353          \textcolor{keywordflow}{for} (\textcolor{keyword}{auto}\& v : out) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00354}00354             v = \mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00355}00355             ++\mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00356}00356          \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00357}00357          \textcolor{keywordflow}{return} out;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00358}00358       \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00359}00359       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} I>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00360}\mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl_3_01construct__with__size_3_01_container_00_01_n_01_4_00_01false_01_4_a9ea2c11c2bd8dbded7f11c37e9fa82d1}{00360}}       \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1buildiota__impl_3_01construct__with__size_3_01_container_00_01_n_01_4_00_01false_01_4_a9ea2c11c2bd8dbded7f11c37e9fa82d1}{impl}}(T \mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}}, I incr) -\/> Container \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00361}00361          Container out = \mbox{\hyperlink{structkblib_1_1construct__with__size}{construct\_with\_size<Container, N>::make}}();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00362}00362          \textcolor{keywordflow}{for} (\textcolor{keyword}{auto}\& v : out) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00363}00363             v = \mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00364}00364             \mbox{\hyperlink{structkblib_1_1detail_1_1value}{value}} += incr;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00365}00365          \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00366}00366          \textcolor{keywordflow}{return} out;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00367}00367       \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00368}00368    \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00369}00369 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00370}00370 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00372}00372 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Container = std::vector<T>>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00373}\mbox{\hyperlink{classkblib_1_1stack}{00373}} \textcolor{keyword}{class }[[deprecated("{}use \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} class derived from \mbox{\hyperlink{namespacestd}{std}}::\mbox{\hyperlink{classkblib_1_1stack}{stack}} instead"{})]] \mbox{\hyperlink{classkblib_1_1stack}{stack}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00374}00374  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00375}00375    \textcolor{comment}{// Member types}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00376}00376 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00377}\mbox{\hyperlink{classkblib_1_1stack_af50b1e897e3eef9157f5fe0eea9e5314}{00377}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1stack_af50b1e897e3eef9157f5fe0eea9e5314}{container\_type}} = Container;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00378}\mbox{\hyperlink{classkblib_1_1stack_ae4fbe6bf8987ee19fbdb43612f29225b}{00378}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1stack_ae4fbe6bf8987ee19fbdb43612f29225b}{value\_type}} = \textcolor{keyword}{typename} Container::value\_type;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00379}\mbox{\hyperlink{classkblib_1_1stack_a568f0e7fa8a9c97e38b2e4cae70cdccb}{00379}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1stack_a568f0e7fa8a9c97e38b2e4cae70cdccb}{size\_type}} = \textcolor{keyword}{typename} Container::size\_type;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00380}\mbox{\hyperlink{classkblib_1_1stack_a1c6031907afcdef7438255a86098da13}{00380}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1stack_a1c6031907afcdef7438255a86098da13}{reference}} = \textcolor{keyword}{typename} Container::reference;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00381}\mbox{\hyperlink{classkblib_1_1stack_a875c9fcac9026d1b1ef1139613a33331}{00381}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1stack_a875c9fcac9026d1b1ef1139613a33331}{const\_reference}} = \textcolor{keyword}{typename} Container::const\_reference;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00382}00382 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00383}00383    \textcolor{keyword}{static\_assert}(std::is\_same<T, value\_type>::value,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00384}00384                  \textcolor{stringliteral}{"{}Container::value\_type must be T."{}});}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00385}00385 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00386}00386  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00387}00387    \mbox{\hyperlink{classkblib_1_1stack_af50b1e897e3eef9157f5fe0eea9e5314}{container\_type}} backing;}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00388}00388 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00389}00389  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00390}00390    \textcolor{comment}{// Constructors}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00391}00391 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00392}\mbox{\hyperlink{classkblib_1_1stack_abe934a849e2501abcda7cd4b339e03dd}{00392}}    \mbox{\hyperlink{classkblib_1_1stack_abe934a849e2501abcda7cd4b339e03dd}{stack}}()}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00393}00393        : \mbox{\hyperlink{classkblib_1_1stack}{stack}}(Container()) \{\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00394}\mbox{\hyperlink{classkblib_1_1stack_a7c3903820c3f9aabfa8ed62ee6287fbc}{00394}}    \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1stack_a7c3903820c3f9aabfa8ed62ee6287fbc}{stack}}(\textcolor{keyword}{const} Container\& cont)}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00395}00395        : backing(cont) \{\}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00396}00396 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00397}00397    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Alloc,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00398}00398              \textcolor{keyword}{typename} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00399}00399                  std::uses\_allocator<container\_type, Alloc>::value, \textcolor{keywordtype}{int}>::type}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00400}00400              = 0>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00401}\mbox{\hyperlink{classkblib_1_1stack_acc8b2b3ee47bda017ad6caeccd78ebb7}{00401}}    \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1stack_acc8b2b3ee47bda017ad6caeccd78ebb7}{stack}}(\textcolor{keyword}{const} Alloc\& alloc);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00402}00402    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Alloc,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00403}00403              \textcolor{keyword}{typename} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00404}00404                  std::uses\_allocator<container\_type, Alloc>::value, \textcolor{keywordtype}{int}>::type}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00405}00405              = 0>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00406}\mbox{\hyperlink{classkblib_1_1stack_af4f5c8beeea91ee0d70514732833c141}{00406}}    \mbox{\hyperlink{classkblib_1_1stack_af4f5c8beeea91ee0d70514732833c141}{stack}}(\textcolor{keyword}{const} Container\& cont, \textcolor{keyword}{const} Alloc\& alloc);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00407}00407    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Alloc,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00408}00408              \textcolor{keyword}{typename} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00409}00409                  std::uses\_allocator<container\_type, Alloc>::value, \textcolor{keywordtype}{int}>::type}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00410}00410              = 0>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00411}\mbox{\hyperlink{classkblib_1_1stack_a14358fd6e00c61bec10c4e65891e1e81}{00411}}    \mbox{\hyperlink{classkblib_1_1stack_a14358fd6e00c61bec10c4e65891e1e81}{stack}}(Container \&\& cont, \textcolor{keyword}{const} Alloc\& alloc);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00412}00412    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Alloc,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00413}00413              \textcolor{keyword}{typename} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00414}00414                  std::uses\_allocator<container\_type, Alloc>::value, \textcolor{keywordtype}{int}>::type}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00415}00415              = 0>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00416}\mbox{\hyperlink{classkblib_1_1stack_a3a36600f800f905110a11120e28a193c}{00416}}    \mbox{\hyperlink{classkblib_1_1stack_a3a36600f800f905110a11120e28a193c}{stack}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1stack}{stack}}\& cont, \textcolor{keyword}{const} Alloc\& alloc);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00417}00417    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Alloc,}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00418}00418              \textcolor{keyword}{typename} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00419}00419                  std::uses\_allocator<container\_type, Alloc>::value, \textcolor{keywordtype}{int}>::type}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00420}00420              = 0>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00421}\mbox{\hyperlink{classkblib_1_1stack_a177d4502f8e3c25d2e713170fafff0f6}{00421}}    \mbox{\hyperlink{classkblib_1_1stack_a177d4502f8e3c25d2e713170fafff0f6}{stack}}(\mbox{\hyperlink{classkblib_1_1stack}{stack}} \&\& cont, \textcolor{keyword}{const} Alloc\& alloc);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00422}00422 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00423}00423    \textcolor{comment}{// Element access}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00424}00424 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00425}\mbox{\hyperlink{classkblib_1_1stack_a4ed0376eb5db1d57435999a462ccdbb7}{00425}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a4ed0376eb5db1d57435999a462ccdbb7}{top}}()\& \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(backing.back()))-\/>reference \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00426}00426       \textcolor{keywordflow}{return} backing.back();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00427}00427    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00428}\mbox{\hyperlink{classkblib_1_1stack_aa213a5bf6794d6a068c0d95d77086271}{00428}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_aa213a5bf6794d6a068c0d95d77086271}{top}}() const\& noexcept(noexcept(backing.back()))}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00429}00429        -\/>\mbox{\hyperlink{classkblib_1_1stack_a875c9fcac9026d1b1ef1139613a33331}{const\_reference}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00430}00430       \textcolor{keywordflow}{return} backing.back();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00431}00431    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00432}00432 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00433}00433    \textcolor{comment}{// Capacity}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00434}00434 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00435}\mbox{\hyperlink{classkblib_1_1stack_abde134033ac22881364a91f130e5193e}{00435}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_abde134033ac22881364a91f130e5193e}{empty}}() const noexcept-\/>\textcolor{keywordtype}{bool} \{ \textcolor{keywordflow}{return} backing.empty(); \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00436}\mbox{\hyperlink{classkblib_1_1stack_a8228c28e0bd1727a70ae996726b78e1a}{00436}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a8228c28e0bd1727a70ae996726b78e1a}{size}}() const noexcept-\/>\mbox{\hyperlink{classkblib_1_1stack_a568f0e7fa8a9c97e38b2e4cae70cdccb}{size\_type}} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00437}00437       \textcolor{keywordflow}{return} backing.size();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00438}00438    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00439}00439 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00440}00440    \textcolor{comment}{// Modifiers}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00441}00441 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00442}\mbox{\hyperlink{classkblib_1_1stack_aaadb1c9394d47abe4c4b8461a0ae3bb5}{00442}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_aaadb1c9394d47abe4c4b8461a0ae3bb5}{push}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1stack_ae4fbe6bf8987ee19fbdb43612f29225b}{value\_type}}\& value)-\/>decltype(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00443}00443       \textcolor{keywordflow}{return} backing.push\_back(value);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00444}00444    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00445}\mbox{\hyperlink{classkblib_1_1stack_a13fe45a0947536d9abda3ce2f8b78cd3}{00445}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a13fe45a0947536d9abda3ce2f8b78cd3}{push}}(\mbox{\hyperlink{classkblib_1_1stack_ae4fbe6bf8987ee19fbdb43612f29225b}{value\_type}} \&\& value)-\/>decltype(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00446}00446       \textcolor{keywordflow}{return} backing.push\_back(std::move(value));}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00447}00447    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00448}00448 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00449}00449    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00450}\mbox{\hyperlink{classkblib_1_1stack_ae06245bac9546b82705deb3f76e5282a}{00450}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_ae06245bac9546b82705deb3f76e5282a}{emplace}}(Args \&\& ... args)\&-\/>decltype(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00451}00451       \textcolor{keywordflow}{return} backing.emplace\_back(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00452}00452    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00453}00453 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00454}\mbox{\hyperlink{classkblib_1_1stack_a520a8a63af1499be3d500c1e88390ab9}{00454}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a520a8a63af1499be3d500c1e88390ab9}{pop}}() noexcept(noexcept(backing.pop\_back()))-\/>\textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00455}00455       backing.pop\_back();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00456}00456       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00457}00457    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00458}\mbox{\hyperlink{classkblib_1_1stack_a50713b8731aa630ca0a0cad0520fe781}{00458}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a50713b8731aa630ca0a0cad0520fe781}{clear}}() noexcept(noexcept(backing.clear()))-\/>\textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00459}00459       backing.clear();}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00460}00460       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00461}00461    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00462}00462 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00463}\mbox{\hyperlink{classkblib_1_1stack_a2c758eeff5a1361ae127ad0da70f6fa4}{00463}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a2c758eeff5a1361ae127ad0da70f6fa4}{swap}}(\mbox{\hyperlink{classkblib_1_1stack}{stack}}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00464}00464              \& other) \textcolor{keyword}{noexcept}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{fakestd::is\_nothrow\_swappable<Container>::value}})}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00465}00465        -\/>\textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00466}00466       \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00467}00467       \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(backing, other.backing);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00468}00468       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00469}00469    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00470}00470 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00471}00471    \textcolor{comment}{// Container access}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00472}00472 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00473}\mbox{\hyperlink{classkblib_1_1stack_a4b68d33a63ae5088ca5f0001bb7fc8db}{00473}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a4b68d33a63ae5088ca5f0001bb7fc8db}{container}}() const\&-\/>\mbox{\hyperlink{classkblib_1_1stack_af50b1e897e3eef9157f5fe0eea9e5314}{container\_type}}\& \{ \textcolor{keywordflow}{return} backing; \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00474}\mbox{\hyperlink{classkblib_1_1stack_a83f9fb28b0dea72a120b8ecd6f404ee5}{00474}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a83f9fb28b0dea72a120b8ecd6f404ee5}{container}}()\&-\/>container\_type\& \{ \textcolor{keywordflow}{return} backing; \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00475}00475 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00476}\mbox{\hyperlink{classkblib_1_1stack_a9ee7459500286dbc4c12af268f4412b4}{00476}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1stack_a9ee7459500286dbc4c12af268f4412b4}{container}}()\&\&-\/>container\_type \{}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00477}00477       \textcolor{keywordflow}{return} std::move(backing);}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00478}00478    \}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00479}00479 \};}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00480}00480 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00481}00481 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00482}00482 }
\DoxyCodeLine{\Hypertarget{containers_8h_source_l00483}00483 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// KBLIB\_CONTAINERS\_H}}

\end{DoxyCode}
