\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 .}} \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 }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00040}00040 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00041}00041 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00042}00042 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00043}00043 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00044}00044 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00045}00045 \textcolor{preprocessor}{\#include }} \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}}* \{} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00069}00069 \textcolor{keyword}{auto} it = \mbox{\hyperlink{namespacekblib_a1490492d82c28f195f0f44a9d88fb2cc}{map}}.find(std::forward(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::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(r)), end(std::forward(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>} \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 \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(\mbox{\hyperlink{namespacestd}{std}}::forward(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::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::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()\})) \{} \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}} \{} \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(\mbox{\hyperlink{namespacestd}{std}}::forward(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::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::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::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}}\& 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}}\& 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}}\& 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}}\& 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}}\& it1,} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00305}00305 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& 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}}\& it1,} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00310}00310 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1build__iterator}{build\_iterator}}\& 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 \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}}>} \DoxyCodeLine{\Hypertarget{containers_8h_source_l00338}00338 : \textcolor{keyword}{public} integral\_constant \{\};} \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}}, 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::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::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>} \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::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::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::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::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::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::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)...);} \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::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}