\hypertarget{fakestd_8h_source}{}\doxysection{fakestd.\+h}
\label{fakestd_8h_source}\index{kblib/fakestd.h@{kblib/fakestd.h}}
\mbox{\hyperlink{fakestd_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00004}00004 \textcolor{comment}{ * things.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00005}00005 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00017}00017 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00019}00019 \textcolor{comment}{ * along with this program.  If not, see <https://www.gnu.org/licenses/>.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00021}00021 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef KBLIB\_FAKESTD\_H}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00033}00033 \textcolor{preprocessor}{\#define KBLIB\_FAKESTD\_H}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00035}00035 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00036}00036 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00037}00037 \textcolor{preprocessor}{\#include <array>}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00038}00038 \textcolor{preprocessor}{\#include <limits>}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00039}00039 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00040}00040 \textcolor{preprocessor}{\#include <type\_traits>}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00041}00041 \textcolor{preprocessor}{\#include <utility>}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00042}00042 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00043}00043 \textcolor{preprocessor}{\#if \_\_has\_include("{}gsl/pointers"{}})}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00044}00044 \textcolor{preprocessor}{\#  include "{}gsl/pointers"{}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00045}00045 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00047}00047 \textcolor{preprocessor}{\#ifndef KBLIB\_FAKESTD}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00048}\mbox{\hyperlink{fakestd_8h_a1bd1bd94076a0a71cc107c28805209fd}{00048}} \textcolor{preprocessor}{\#  define KBLIB\_FAKESTD (\_\_cplusplus < 201703L)}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00049}00049 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00051}00051 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00053}00053 \textcolor{preprocessor}{\#if \_\_has\_include("{}gsl/pointers"{}})}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00054}00054 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a71909c4e14de14b43b7179d2ccb490e8}{gsl::owner}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00055}00055 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00056}00056 template <class T, class = std::enable\_if\_t<std::is\_pointer<T>::value>>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00057}\mbox{\hyperlink{namespacekblib_a71909c4e14de14b43b7179d2ccb490e8}{00057}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a71909c4e14de14b43b7179d2ccb490e8}{owner}} = T;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00058}00058 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00060}00060 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} B, \textcolor{keyword}{typename} T = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00061}\mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{00061}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}} = \textcolor{keyword}{typename} std::enable\_if<B, T>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00063}00063 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00064}\mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{00064}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{decay\_t}} = \textcolor{keyword}{typename} std::decay<T>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00066}00066 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00067}\mbox{\hyperlink{namespacekblib_ad3067cf43d6c4d6d61e9bbb81c145cf9}{00067}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ad3067cf43d6c4d6d61e9bbb81c145cf9}{remove\_cvref\_t}} =}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00068}00068     \textcolor{keyword}{typename} std::remove\_reference<typename std::remove\_cv<T>::type>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00070}00070 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} v>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00071}\mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{00071}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{bool\_constant}} = std::integral\_constant<bool, v>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00073}00073 \textcolor{preprocessor}{\#if \_\_cpp\_lib\_constexpr\_functional}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00074}00074 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{std::invoke}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00075}00075 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00077}00077 \textcolor{preprocessor}{\#  if \_\_cpp\_lib\_apply}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00079}00079 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00080}00080 \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(F\&\& f, Args\&\&... args) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{std::apply}}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00081}00081     std::forward<F>(f), std::forward\_as\_tuple(std::forward<Args>(args)...))))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00082}00082     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00083}00083    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{std::apply}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00084}00084                      std::forward\_as\_tuple(std::forward<Args>(args)...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00085}00085 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00086}00086 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00087}00087 \textcolor{preprocessor}{\#  else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00088}00088 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00089}00089 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00090}00090 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00091}00091    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00092}00092              enable\_if\_t<not std::is\_member\_pointer<remove\_cvref\_t<F>>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00093}00093                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00094}\mbox{\hyperlink{namespacekblib_1_1detail_a9fcbe60cc8d89d741dc327bee247fbcb}{00094}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{do\_invoke}}(F\&\& f, Args\&\&... args) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00095}00095        std::forward<F>(f)(std::forward<Args>(args)...))) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00096}00096       \textcolor{keywordflow}{return} std::forward<F>(f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00097}00097    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00098}00098 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00099}00099    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Object, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00100}00100              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_pointer<remove\_cvref\_t<Object>}}>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00101}00101                              and std::is\_member\_function\_pointer<F>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00102}00102                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00103}\mbox{\hyperlink{namespacekblib_1_1detail_a3814b2a778b24c77c5b25f0ba6ee517a}{00103}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{do\_invoke}}(F f, Object\&\& obj, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00104}00104        \textcolor{keyword}{noexcept}((std::forward<Object>(obj).*f)(std::forward<Args>(args)...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00105}00105        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00106}00106       \textcolor{keywordflow}{return} (obj.*f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00107}00107    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00109}00109    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Pointer, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00110}00110              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_pointer<Pointer>::value}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00111}00111                              and std::is\_member\_function\_pointer<F>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00112}00112                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00113}\mbox{\hyperlink{namespacekblib_1_1detail_a45e19fa5297851e924dc28b9ca9ebc5c}{00113}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{do\_invoke}}(F f, Pointer ptr, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00114}00114        \textcolor{keyword}{noexcept}((ptr-\/>*f)(std::forward<Args>(args)...))) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00115}00115       \textcolor{keywordflow}{return} (ptr-\/>*f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00116}00116    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00118}00118    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Member, \textcolor{keyword}{typename} Object,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00119}00119              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_pointer<remove\_cvref\_t<Object>}}>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00120}00120                              and std::is\_member\_object\_pointer<Member>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00121}00121                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00122}\mbox{\hyperlink{namespacekblib_1_1detail_a53d75bc53ab7612ecbf8f31d4f125194}{00122}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{do\_invoke}}(Member mem, Object\&\& obj) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00123}00123        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00124}00124       \textcolor{keywordflow}{return} std::forward<Object>(obj).*mem;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00125}00125    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00126}00126 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00127}00127    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Member, \textcolor{keyword}{typename} Pointer,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00128}00128              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_pointer<Pointer>::value}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00129}00129                              and std::is\_member\_object\_pointer<Member>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00130}00130                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00131}\mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{00131}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{do\_invoke}}(Member mem, Pointer ptr) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00132}00132        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00133}00133       \textcolor{keywordflow}{return} ptr.*mem;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00134}00134    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00135}00135 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00137}00137 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00138}\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{00138}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(F\&\& f, Args\&\&... args) \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00139}00139     \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{detail::do\_invoke}}(std::forward<F>(f), std::forward<Args>(args)...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00140}00140     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00141}00141    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{detail::do\_invoke}}(std::forward<F>(f), std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00142}00142 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00144}00144 \textcolor{preprocessor}{\#  endif }\textcolor{comment}{// \_\_cpp\_lib\_apply}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00145}00145 \textcolor{preprocessor}{\#endif    }\textcolor{comment}{// \_\_cpp\_lib\_constexpr\_functional}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00146}00146 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00152}00152 \textcolor{preprocessor}{\#if KBLIB\_FAKESTD}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00153}00153 \textcolor{keyword}{namespace }fakestd \{ \textcolor{comment}{// C++14 implementation of C++17 void\_t, invoke\_result,}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00154}00154                     \textcolor{comment}{// (partially) is\_invocable, and is\_nothrow\_swappable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00155}00155    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00163}00163    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00164}00164 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00165}00165       \textcolor{keyword}{template} <\textcolor{keyword}{typename} AlwaysVoid, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}...>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00166}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{00166}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{invoke\_result}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00167}00167       \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00168}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c}{00168}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{invoke\_result}}<decltype(void(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(\mbox{\hyperlink{namespacestd}{std}}::declval<F>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00169}00169                                                 std::declval<Args>()...))),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00170}00170                            F, Args...> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00171}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c_adab0a7190a459ea8dbe1d3c5fc777d82}{00171}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c_adab0a7190a459ea8dbe1d3c5fc777d82}{type}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00172}00172              = \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(std::declval<F>(), std::declval<Args>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00173}00173       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00174}00174    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00175}00175    \textcolor{keyword}{template} <\textcolor{keyword}{class }F, \textcolor{keyword}{class}... ArgTypes>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00176}\mbox{\hyperlink{structkblib_1_1fakestd_1_1invoke__result}{00176}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1invoke__result}{invoke\_result}} : \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{detail::invoke\_result}}<void, F, ArgTypes...> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00178}00178    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... ArgTypes>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00179}\mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{00179}}    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{invoke\_result\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1fakestd_1_1invoke__result}{invoke\_result}}<F, ArgTypes...>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00180}00180 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00181}00181    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00182}\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{00182}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{make\_void}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00183}\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void_a32600336002c580bdcfcb554d6a1fe47}{00183}}       \textcolor{keyword}{typedef} \textcolor{keywordtype}{void} \mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void_a32600336002c580bdcfcb554d6a1fe47}{type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00184}00184    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00185}00185    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00186}\mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{00186}}    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{make\_void}}<Ts...>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00187}00187 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00188}00188    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00189}00189       \textcolor{comment}{// ALL generic swap overloads MUST already have a declaration available at}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00190}00190       \textcolor{comment}{// this point.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00192}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{00192}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00193}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a2a82e62316cd64b6264012b218c62393}{00193}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a2a82e62316cd64b6264012b218c62393}{nat}}() = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00194}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a5c8258023f5fb115d91f8ee0ffd23379}{00194}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a5c8258023f5fb115d91f8ee0ffd23379}{nat}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}}\&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00195}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a85e8b0b6d8f269fb97a93fbafda6c3da}{00195}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}}\& \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a85e8b0b6d8f269fb97a93fbafda6c3da}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}}\&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00196}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a7657d3bbc43cabfa896d64a5a48a1112}{00196}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a7657d3bbc43cabfa896d64a5a48a1112}{\string~nat}}() = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00197}00197       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00198}00198 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00199}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{00199}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{two}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00200}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two_ab8084020a36b55fcefbf3d77914c754d}{00200}}          \textcolor{keywordtype}{char} lx[2];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00201}00201       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00202}00202 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00203}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl}{00203}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl}{is\_referenceable\_impl}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00204}00204          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00205}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_acd6d49db87deecfee4be7665af29937f}{00205}}          \textcolor{keyword}{static} Tp\& \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_acd6d49db87deecfee4be7665af29937f}{test}}(\textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00206}00206          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00207}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_a2fa4b1898ff262b1c6fde11d4c259b53}{00207}}          \textcolor{keyword}{static} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{two}} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_a2fa4b1898ff262b1c6fde11d4c259b53}{test}}(...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00208}00208       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00210}00210       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00211}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable}{00211}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable}{is\_referenceable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00212}00212           : std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00213}00213                 bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00214}00214                 not std::is\_same<decltype(is\_referenceable\_impl::test<Tp>(0)),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00215}00215                                  two>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00216}00216 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00217}00217       \textcolor{keyword}{template} <\textcolor{keyword}{class }Tp, \textcolor{keyword}{class }Up = Tp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00218}00218                 \textcolor{keywordtype}{bool} NotVoid}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00219}00219                 = not std::is\_void<Tp>::value and not std::is\_void<Up>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00220}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{00220}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{swappable\_with}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00221}00221          \textcolor{keyword}{template} <\textcolor{keyword}{class} LHS, \textcolor{keyword}{class} RHS>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00222}00222          \textcolor{keyword}{static} \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<LHS>(), std::declval<RHS>()))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00223}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a921c5dff8c0d25033136c5003f5b8b2c}{00223}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a921c5dff8c0d25033136c5003f5b8b2c}{test\_swap}}(\textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00224}00224          \textcolor{keyword}{template} <\textcolor{keyword}{class}, \textcolor{keyword}{class}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00225}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_aef6e8d4a031d000e4dfaf5ae482f70b3}{00225}}          \textcolor{keyword}{static} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_aef6e8d4a031d000e4dfaf5ae482f70b3}{test\_swap}}(\textcolor{keywordtype}{long});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00226}00226 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00227}00227          \textcolor{comment}{// Extra parens are needed for the C++03 definition of decltype.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00228}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_ae2e5bf92c4cc27a7650ba85aeb1b7315}{00228}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_ae2e5bf92c4cc27a7650ba85aeb1b7315}{swap1}} = \textcolor{keyword}{decltype}((test\_swap<Tp, Up>(0)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00229}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a7b5c2e2b0270662882da4bb85339a216}{00229}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a7b5c2e2b0270662882da4bb85339a216}{swap2}} = \textcolor{keyword}{decltype}((test\_swap<Up, Tp>(0)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00231}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a6be72f9d93956ceb9ee2cb6c510ac276}{00231}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = not std::is\_same<swap1, nat>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00232}00232                                    and not std::is\_same<swap2, nat>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00233}00233       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00234}00234 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00235}00235       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00236}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_3_01_tp_00_01_up_00_01false_01_4}{00236}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{swappable\_with}}<Tp, Up, false> : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00237}00237 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00238}00238       \textcolor{keyword}{template} <\textcolor{keyword}{class }Tp, \textcolor{keyword}{class }Up = Tp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00239}00239                 \textcolor{keywordtype}{bool} Swappable = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{swappable\_with<Tp, Up>::value}}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00240}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{00240}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{nothrow\_swappable\_with}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00241}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with_a9dfc59959316db8d9eb18e1b34589720}{00241}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00242}00242              \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<Tp>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00243}00243                   std::declval<Up>()))and \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<Up>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00244}00244                                                         std::declval<Tp>()));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00245}00245       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00246}00246 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00247}00247       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00248}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with_3_01_tp_00_01_up_00_01false_01_4}{00248}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{nothrow\_swappable\_with}}<Tp, Up, false> : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00250}00250    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00252}00252    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00253}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{00253}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{is\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00254}00254        : \textcolor{keyword}{public} std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00255}00255                                        detail::swappable\_with<Tp\&>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00256}00256 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00257}00257    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00258}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{00258}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{is\_nothrow\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00259}00259        : \textcolor{keyword}{public} std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00260}00260              bool, detail::nothrow\_swappable\_with<Tp\&>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00261}00261 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00262}00262 \textcolor{preprocessor}{\#  if KBLIB\_USE\_CXX17}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00264}00264    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00265}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{00265}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{is\_swappable\_with}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00266}00266        : \textcolor{keyword}{public} std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00267}00267                                        detail::swappable\_with<Tp, Up>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00268}00268    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00269}00269 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00270}00270    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00271}00271    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{is\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00272}00272        : \textcolor{keyword}{public} std::conditional<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00273}00273              detail::is\_referenceable<Tp>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00274}00274              is\_swappable\_with<typename std::add\_lvalue\_reference<Tp>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00275}00275                                typename std::add\_lvalue\_reference<Tp>::type>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00276}00276              std::false\_type>::type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00277}00277 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00278}00278    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00279}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{00279}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{is\_nothrow\_swappable\_with}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00280}00280        : \textcolor{keyword}{public} integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00281}00281              bool, detail::nothrow\_swappable\_with<Tp, Up>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00282}00282 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00283}00283    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00284}00284    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{is\_nothrow\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00285}00285        : \textcolor{keyword}{public} conditional<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00286}00286              detail::is\_referenceable<Tp>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00287}00287              is\_nothrow\_swappable\_with<typename add\_lvalue\_reference<Tp>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00288}00288                                        typename add\_lvalue\_reference<Tp>::type>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00289}00289              false\_type>::type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00290}00290 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00291}00291    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00292}\mbox{\hyperlink{namespacekblib_1_1fakestd_a9a5cfade6cc983f22b072f767fb12354}{00292}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_a9a5cfade6cc983f22b072f767fb12354}{is\_swappable\_with\_v}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{is\_swappable\_with<Tp, Up>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00293}00293 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00294}00294    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00295}\mbox{\hyperlink{namespacekblib_1_1fakestd_a0d19b1962ac16e513208678ca5fdeaf8}{00295}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_a0d19b1962ac16e513208678ca5fdeaf8}{is\_swappable\_v}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{is\_swappable<Tp>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00296}00296 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00297}00297    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00298}\mbox{\hyperlink{namespacekblib_1_1fakestd_a211e13ec19d4dff8aa0be49de33d1f3d}{00298}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_a211e13ec19d4dff8aa0be49de33d1f3d}{is\_nothrow\_swappable\_with\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00299}00299        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{is\_nothrow\_swappable\_with<Tp, Up>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00300}00300 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00301}00301    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00302}\mbox{\hyperlink{namespacekblib_1_1fakestd_ac3e868e4110d6024c05074addc73e324}{00302}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_ac3e868e4110d6024c05074addc73e324}{is\_nothrow\_swappable\_v}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{is\_nothrow\_swappable<Tp>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00303}00303 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00304}00304 \textcolor{preprocessor}{\#  endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00305}00305 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00306}00306    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00307}00307       \textcolor{keyword}{template} <\textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00308}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{00308}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{not\_fn\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00309}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a2538de351c9638354f49fb814e4d4659}{00309}}          \textcolor{keyword}{constexpr} \textcolor{keyword}{explicit} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a2538de351c9638354f49fb814e4d4659}{not\_fn\_t}}(F\&\& f)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00310}00310              : fd(\mbox{\hyperlink{namespacestd}{std}}::forward<F>(f)) \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00311}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_aeab2e5affa8ba07ec100fe0f67c6980a}{00311}}          \textcolor{keyword}{constexpr} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_aeab2e5affa8ba07ec100fe0f67c6980a}{not\_fn\_t}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{not\_fn\_t}}\&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00312}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_abdcd9a6f77eaaa7fef387130c56d0a87}{00312}}          \textcolor{keyword}{constexpr} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_abdcd9a6f77eaaa7fef387130c56d0a87}{not\_fn\_t}}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{not\_fn\_t}}\&\&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00313}00313 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00314}00314          \textcolor{keyword}{template} <\textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00315}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_ae78bc5d030af2e2b43a9f2bc14be54e2}{00315}}          \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_ae78bc5d030af2e2b43a9f2bc14be54e2}{operator()}}(Args\&\&... args) \& -\/> \textcolor{keyword}{decltype}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00316}00316              not std::declval<invoke\_result\_t<std::decay\_t<F>\&, Args...>>()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00317}00317             \textcolor{keywordflow}{return} not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(fd, std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00318}00318          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00319}00319 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00320}00320          \textcolor{keyword}{template} <\textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00321}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a23a1b8b1fc87121196f8da49527ecba1}{00321}}          \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a23a1b8b1fc87121196f8da49527ecba1}{operator()}}(Args\&\&... args) \textcolor{keyword}{const}\& -\/> \textcolor{keyword}{decltype}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00322}00322              not std::declval<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00323}00323                  \mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{invoke\_result\_t<std::decay\_t<F>}} \textcolor{keyword}{const}\&, Args...>>()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00324}00324             \textcolor{keywordflow}{return} not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(std::move(fd), std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00325}00325          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00326}00326 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00327}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a0319fa1e1e859f2713d3e4d8004c4d0e}{00327}}          std::decay\_t<F> \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a0319fa1e1e859f2713d3e4d8004c4d0e}{fd}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00328}00328       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00329}00329    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00330}00330 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00331}00331    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00332}\mbox{\hyperlink{namespacekblib_1_1fakestd_a10b8e048c2aa3988eba70d354014a991}{00332}}    \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1fakestd_a10b8e048c2aa3988eba70d354014a991}{not\_fn}}(F\&\& f) -\/> \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{detail::not\_fn\_t<F>}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00333}00333       \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{detail::not\_fn\_t<F>}}(std::forward<F>(f));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00334}00334    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00336}\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{00336}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{in\_place\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00337}\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t_a09359eafc9bf49e6dc7b79ab0d9c10b8}{00337}}       \textcolor{keyword}{explicit} \mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t_a09359eafc9bf49e6dc7b79ab0d9c10b8}{in\_place\_t}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00338}00338    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00339}00339    \textcolor{keyword}{static} \textcolor{keyword}{constexpr} \mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{in\_place\_t}} in\_place\{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00340}00340 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00341}00341    \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00342}\mbox{\hyperlink{namespacekblib_1_1fakestd_a02db9a7161f158d41173dfa1afd5441e}{00342}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{max\_element}}(ForwardIt first, ForwardIt last) -\/> ForwardIt \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00343}00343       \textcolor{keywordflow}{if} (first == last)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00344}00344          \textcolor{keywordflow}{return} last;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00345}00345 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00346}00346       ForwardIt largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00347}00347       ++first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00348}00348       \textcolor{keywordflow}{for} (; first != last; ++first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00349}00349          \textcolor{keywordflow}{if} (*largest < *first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00350}00350             largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00351}00351          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00352}00352       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00353}00353       \textcolor{keywordflow}{return} largest;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00354}00354    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00355}00355 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00356}00356    \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt, \textcolor{keyword}{class} Compare>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00357}\mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{00357}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{max\_element}}(ForwardIt first, ForwardIt last, Compare comp)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00358}00358        -\/> ForwardIt \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00359}00359       \textcolor{keywordflow}{if} (first == last)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00360}00360          \textcolor{keywordflow}{return} last;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00361}00361 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00362}00362       ForwardIt largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00363}00363       ++first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00364}00364       \textcolor{keywordflow}{for} (; first != last; ++first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00365}00365          \textcolor{keywordflow}{if} (comp(*largest, *first)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00366}00366             largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00367}00367          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00368}00368       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00369}00369       \textcolor{keywordflow}{return} largest;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00370}00370    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00372}00372    \textcolor{keyword}{template} <\textcolor{keyword}{class} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00373}\mbox{\hyperlink{namespacekblib_1_1fakestd_adb8781bc0e5d1ba4ca4624293c0c98ae}{00373}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{size}}(\textcolor{keyword}{const} C\& c) -\/> \textcolor{keyword}{decltype}(c.size()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00374}00374       \textcolor{keywordflow}{return} c.size();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00375}00375    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00376}00376 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00377}00377    \textcolor{keyword}{template} <\textcolor{keyword}{class} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00378}\mbox{\hyperlink{namespacekblib_1_1fakestd_a432682ee4f57ba5e6c16aea83751852c}{00378}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{size}}(\textcolor{keyword}{const} T (\&)[N]) \textcolor{keyword}{noexcept} -\/> std::size\_t \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00379}00379       \textcolor{keywordflow}{return} N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00380}00380    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00381}00381 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00382}00382    \textcolor{comment}{// Adapted from libstdc++ code, licensed under GPL}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00383}00383 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00384}00384    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00385}00385       \textcolor{comment}{// invokable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00386}00386       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00387}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{00387}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable\_r}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00388}00388          \textcolor{keyword}{template} <\textcolor{keyword}{class }XFp, \textcolor{keyword}{class}... XArgs>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00389}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a3b66cd7bd432f7db0b4ec65291e3046c}{00389}}          \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a3b66cd7bd432f7db0b4ec65291e3046c}{try\_call}}(\textcolor{keywordtype}{int})}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00390}00390              -\/> \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<XFp>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00391}00391                                        std::declval<XArgs>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00392}00392          \textcolor{keyword}{template} <\textcolor{keyword}{class }XFp, \textcolor{keyword}{class}... XArgs>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00393}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a48a55ae0d97a8b3329ef0d205410f82a}{00393}}          \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a48a55ae0d97a8b3329ef0d205410f82a}{try\_call}}(...) -\/> \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{detail::nat}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00394}00394 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00395}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_aef19fd92af3f760d46eec6db632ac4df}{00395}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_aef19fd92af3f760d46eec6db632ac4df}{Result}} = \textcolor{keyword}{decltype}(try\_call<Fp, Args...>(0));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00396}00396 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00397}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a1bb75c431ac0ca4e7c83294c02e0b839}{00397}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a1bb75c431ac0ca4e7c83294c02e0b839}{type}} = \textcolor{keyword}{typename} std::conditional<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00398}00398              not std::is\_same<Result, detail::nat>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00399}00399              \textcolor{keyword}{typename} std::conditional<std::is\_void<Ret>::value, std::true\_type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00400}00400                                        std::is\_convertible<Result, Ret>>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00401}00401              std::false\_type>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00402}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_af024b4751f7bea9b13c3c52d1ad7f6af}{00402}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = type::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00403}00403       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00404}00404       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00405}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_aca747f62c5b3039ca3e183555c1e8299}{00405}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable\_r}}<void, Fp, Args...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00406}00406 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00407}00407       \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} IsInvokable, \textcolor{keywordtype}{bool} IsCVVoid, \textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00408}00408                 \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00409}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{00409}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00410}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_a86a46356f9f9a294cd8e8f553a199433}{00410}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00411}00411       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00412}00412 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00413}00413       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00414}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01false_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4}{00414}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}}<true, false, Ret, Fp, Args...> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00415}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01false_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4_ae51ba222add2e69d37b2fda17a3fd713}{00415}}          \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{ThisT}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00416}00416 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00417}00417          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00418}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01false_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4_a38c1383b489e10d67b020179332d15e8}{00418}}          \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01false_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4_a38c1383b489e10d67b020179332d15e8}{test\_noexcept}}(Tp) \textcolor{keyword}{noexcept};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00419}00419 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00420}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01false_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4_a4ccf6a6b24b121fbe1c26c7601c0754c}{00420}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(ThisT::test\_noexcept<Ret>(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00421}00421              \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<Fp>(), std::declval<Args>()...)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00422}00422       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00423}00423 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00424}00424       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00425}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01true_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4}{00425}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}}<true, true, Ret, Fp, Args...> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00426}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_3_01true_00_01true_00_01_ret_00_01_fp_00_01_args_8_8_8_01_4_a593c8827d0754f001ae3c3d6ad259a02}{00426}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00427}00427              \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<Fp>(), std::declval<Args>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00428}00428       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00429}00429 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00430}00430       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00431}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a3555ca296e45965f5f512404b99f7eec}{00431}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00432}00432           = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}}<\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable\_r}}<Ret, Fp, Args...>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00433}00433                                     std::is\_void<Ret>::value, Ret, Fp, Args...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00434}00434 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00435}00435       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00436}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a55d1649cdde1e2c0172f7b62e106fe40}{00436}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00437}00437           = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}}<\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable}}<Fp, Args...>::value, \textcolor{keyword}{true}, void,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00438}00438                                     Fp, Args...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00439}00439 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00440}00440       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00441}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__of}{00441}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__of}{invoke\_of}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00442}00442           : \textcolor{keyword}{public} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00443}00443                 invokable<Fp, Args...>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00444}00444                 typename invokable\_r<void, Fp, Args...>::Result> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00445}00445    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00446}00446 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00447}00447    \textcolor{comment}{// is\_invocable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00448}00448 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00449}00449    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00450}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{00450}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{is\_invocable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00451}00451        : std::integral\_constant<bool, detail::invokable<Fn, Args...>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00452}00452 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00453}00453    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00454}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{00454}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{is\_invocable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00455}00455        : std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00456}00456                                 detail::invokable\_r<Ret, Fn, Args...>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00457}00457    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00458}00458 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00459}00459    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00460}\mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{00460}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{is\_invocable\_v}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{is\_invocable}}<Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00461}00461 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00462}00462    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00463}\mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{00463}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{is\_invocable\_r\_v}} = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{is\_invocable\_r}}<Ret, Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00464}00464 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00465}00465    \textcolor{comment}{// is\_nothrow\_invocable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00466}00466 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00467}00467    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00468}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{00468}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00469}00469        : std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00470}00470                                 detail::nothrow\_invokable<Fn, Args...>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00471}00471    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00472}00472 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00473}00473    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00474}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{00474}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{is\_nothrow\_invocable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00475}00475        : std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00476}00476              bool, detail::nothrow\_invokable\_r<Ret, Fn, Args...>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00477}00477 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00478}00478    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00479}\mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{00479}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{is\_nothrow\_invocable\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00480}00480        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}<Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00481}00481 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00482}00482    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00483}\mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{00483}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{is\_nothrow\_invocable\_r\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00484}00484        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{is\_nothrow\_invocable\_r}}<Ret, Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00485}00485 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00486}00486 \} \textcolor{comment}{// namespace fakestd}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00487}00487 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00488}00488 \textcolor{keyword}{namespace }fakestd = \mbox{\hyperlink{namespacestd}{std}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00489}00489 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00490}00490 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00491}00491 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{fakestd::is\_invocable}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00492}00492 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{fakestd::is\_invocable\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00493}00493 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00494}00494 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{fakestd::is\_invocable\_r}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00495}00495 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{fakestd::is\_invocable\_r\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00496}00496 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00497}00497 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{fakestd::is\_nothrow\_invocable}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00498}00498 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{fakestd::is\_nothrow\_invocable\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00499}00499 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00500}00500 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{fakestd::is\_nothrow\_invocable\_r}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00501}00501 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{fakestd::is\_nothrow\_invocable\_r\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00502}00502 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00503}00503 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00504}\mbox{\hyperlink{structkblib_1_1meta__type}{00504}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00505}00505 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00506}00506 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00507}\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4}{00507}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<T> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00508}\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4_ade1ca6c1fcb0cb4c59dce18d0ea45d1e}{00508}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4_ade1ca6c1fcb0cb4c59dce18d0ea45d1e}{type}} = T;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00509}00509 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00510}00510 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00511}00511 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00512}\mbox{\hyperlink{namespacekblib_af9d6c610a6e855aa1eba054060166247}{00512}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_af9d6c610a6e855aa1eba054060166247}{meta\_type\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<Ts...>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00513}00513 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00514}00514 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00515}\mbox{\hyperlink{structkblib_1_1void__if}{00515}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1void__if}{void\_if}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00516}00516 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00517}00517 \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00518}\mbox{\hyperlink{structkblib_1_1void__if_3_01true_01_4}{00518}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1void__if}{void\_if}}<true> : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<void> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00519}00519 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} b>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00520}\mbox{\hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{00520}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{void\_if\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1void__if}{void\_if<b>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00522}00522 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{fakestd::void\_t}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00523}00523 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00524}00524 \textcolor{comment}{// metafunction\_success:}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00525}00525 \textcolor{comment}{// SFINAE detector for a ::type member type}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00526}00526 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00527}\mbox{\hyperlink{structkblib_1_1metafunction__success}{00527}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1metafunction__success}{metafunction\_success}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00528}00528 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00529}00529 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00530}\mbox{\hyperlink{structkblib_1_1metafunction__success_3_01_t_00_01void__t_3_01typename_01_t_1_1type_01_4_01_4}{00530}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1metafunction__success}{metafunction\_success}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename T::type>> : std::true\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00531}00531 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00532}00532 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00533}\mbox{\hyperlink{structkblib_1_1is__callable}{00533}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__callable}{is\_callable}} : \mbox{\hyperlink{structkblib_1_1metafunction__success}{metafunction\_success}}<fakestd::invoke\_result<T...>> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00534}00534 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00535}00535 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00536}\mbox{\hyperlink{namespacekblib_a5d358e0474506e99331fde45ce81f78f}{00536}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a5d358e0474506e99331fde45ce81f78f}{metafunction\_value\_t}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00537}00537     = std::integral\_constant<\textcolor{keyword}{decltype}(T::value), T::value>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00538}00538 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00543}00543 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} V, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00544}\mbox{\hyperlink{structkblib_1_1return__assert}{00544}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1return__assert}{return\_assert}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00545}00545 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00546}00546 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00547}\mbox{\hyperlink{structkblib_1_1return__assert_3_01true_00_01_t_01_4}{00547}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1return__assert}{return\_assert}}<true, T> : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<T> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00548}00548 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00549}00549 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} V, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00550}\mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{00550}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{return\_assert\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1return__assert}{return\_assert<V, T>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00551}00551 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00552}00552 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00553}00553 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00554}00554    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Arg, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00555}\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{00555}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{apply\_impl}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00556}00556       \textcolor{keyword}{template} <std::size\_t... Is>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00557}\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl_a08646f101e0e5b0df8b2310eab9a9388}{00557}}       \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl_a08646f101e0e5b0df8b2310eab9a9388}{do\_apply}}(F\&\& f, Arg\&\& arg) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00558}00558           \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00559}00559                                  std::get<Is>(std::forward<Arg>(arg))...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00560}00560           -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00561}00561          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00562}00562                               std::get<Is>(std::forward<Arg>(arg))...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00563}00563       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00564}00564    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00565}00565 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00566}00566 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00567}00567 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00568}00568 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Arg>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00569}\mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{00569}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{apply}}(F\&\& f, Arg\&\& arg) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00570}00570     \textcolor{keyword}{noexcept}(\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{detail::apply\_impl<F, Arg>::do\_apply}}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00571}00571         std::forward<F>(f), std::forward<Arg>(arg),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00572}00572         std::index\_sequence<std::tuple\_size<Arg>::value>\{\})))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00573}00573     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00574}00574    \textcolor{keywordflow}{return} detail::apply\_impl<F, Arg>::do\_apply(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00575}00575        std::forward<F>(f), std::forward<Arg>(arg),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00576}00576        std::index\_sequence<std::tuple\_size<Arg>::value>\{\});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00577}00577 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00578}00578 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00579}00579 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00580}\mbox{\hyperlink{namespacekblib_af6baba1dcac20a77bc497b45bfe9586c}{00580}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adca1a6ffb5e6798e2052eac6613146a0}{to\_unique}}(\mbox{\hyperlink{namespacekblib_a71909c4e14de14b43b7179d2ccb490e8}{owner<T*>}} p) -\/> std::unique\_ptr<T> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00581}00581    \textcolor{keywordflow}{return} std::unique\_ptr<T>(p);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00582}00582 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00583}00583 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00584}\mbox{\hyperlink{namespacekblib_adca1a6ffb5e6798e2052eac6613146a0}{00584}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adca1a6ffb5e6798e2052eac6613146a0}{to\_unique}}(\mbox{\hyperlink{namespacekblib_a71909c4e14de14b43b7179d2ccb490e8}{owner<T*>}} p, D\&\& d) -\/> std::unique\_ptr<T, D> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00585}00585    \textcolor{keywordflow}{return} std::unique\_ptr<T, D>(p, d);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00586}00586 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00587}00587 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00591}00591 \textcolor{keyword}{template} <\textcolor{keyword}{typename} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00592}\mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{00592}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(I x) -\/> std::make\_unsigned\_t<I> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00593}00593    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::make\_unsigned\_t<I>\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00594}00594 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00598}00598 \textcolor{keyword}{template} <\textcolor{keyword}{typename} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00599}\mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{00599}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{to\_signed}}(I x) -\/> std::make\_signed\_t<I> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00600}00600    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::make\_signed\_t<I>\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00601}00601 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00602}00602 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00607}00607 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00608}\mbox{\hyperlink{namespacekblib_accb66942cbfbca80c254045501c96cc9}{00608}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_accb66942cbfbca80c254045501c96cc9}{signed\_cast}}(F x)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00609}00609     -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_integral<A>::value}} and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00610}00610                        and std::is\_signed<A>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00611}00611                    std::make\_signed\_t<F>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00612}00612    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{to\_signed}}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00613}00613 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00614}00614 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00619}00619 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00620}00620 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_accb66942cbfbca80c254045501c96cc9}{signed\_cast}}(F x)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00621}00621     -\/> enable\_if\_t<std::is\_integral<A>::value and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00622}00622                        and std::is\_unsigned<A>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00623}00623                    std::make\_unsigned\_t<F>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00624}00624    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00625}00625 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00627}00627 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00628}\mbox{\hyperlink{structkblib_1_1has__member__swap}{00628}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1has__member__swap}{has\_member\_swap}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00629}00629  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00630}00630    \textcolor{keyword}{using }yes = char (\&)[1];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00631}00631    \textcolor{keyword}{using }no = char (\&)[2];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00632}00632 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00633}00633    \textcolor{keyword}{template} <\textcolor{keyword}{typename} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00634}00634    \textcolor{keyword}{static} \textcolor{keyword}{auto} check(\textcolor{keyword}{decltype}(\&\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{C::swap}})) -\/> yes;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00635}00635    \textcolor{keyword}{template} <\textcolor{keyword}{typename}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00636}00636    \textcolor{keyword}{static} \textcolor{keyword}{auto} check(...) -\/> no;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00637}00637 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00638}00638  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00639}\mbox{\hyperlink{structkblib_1_1has__member__swap_a193b61a4ec9d0debb1b852bb4ae5d502}{00639}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{sizeof}(check<T>(\textcolor{keyword}{nullptr})) == \textcolor{keyword}{sizeof}(yes);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00640}00640 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00641}00641 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00642}00642 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00643}\mbox{\hyperlink{structkblib_1_1is__tuple__like}{00643}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__tuple__like}{is\_tuple\_like}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00645}00645 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00646}\mbox{\hyperlink{structkblib_1_1is__tuple__like_3_01_t_00_01void__t_3_01typename_01std_1_1tuple__element_3_010_00_01_t_01_4_1_1type_01_4_01_4}{00646}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__tuple__like}{is\_tuple\_like}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename \mbox{\hyperlink{namespacestd}{std}}::tuple\_element<0, T>::type>>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00647}00647     : std::true\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00648}00648 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00649}00649 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00650}00650 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00651}00651    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00652}\mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{00652}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{ignore}}(Ts\&\&... \textcolor{comment}{/*unused*/}) noexcept -\/> \textcolor{keywordtype}{void} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00653}00653 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00654}00654    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::size\_t... Is>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00655}00655    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00656}\mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{00656}}    \mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{swap\_tuple\_impl}}(T\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, T\& b, std::index\_sequence<Is...> \textcolor{comment}{/*unused*/}) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00657}00657        \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{ignore}}(((\textcolor{keywordtype}{void})\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::get<Is>(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}), std::get<Is>(b)), 0)...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00658}00658        -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00659}00659       \mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{ignore}}(((\textcolor{keywordtype}{void})\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::get<Is>(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}), std::get<Is>(b)), 0)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00660}00660    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00661}00661 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00662}00662 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00663}00663 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00664}00664 \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00670}00670    template <typename T, enable\_if\_t<not has\_member\_swap<T>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00671}00671                                          and not is\_tuple\_like<T>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00672}00672                                      \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00673}00673    \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} operator()(T\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, T\& b) \textcolor{keyword}{const}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00674}00674        \textcolor{keyword}{noexcept}(std::is\_nothrow\_move\_constructible<T>::value and}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00675}00675                     std::is\_nothrow\_move\_assignable<T>::value) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00676}00676       \textcolor{keyword}{auto} tmp = std::move(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00677}00677       \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} = std::move(b);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00678}00678       b = std::move(tmp);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00679}00679       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00680}00680    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00681}00681 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00687}00687    template <typename T, enable\_if\_t<has\_member\_swap<T>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00688}00688    \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} operator()(T\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, T\& b) \textcolor{keyword}{const}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00689}00689        \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.swap(b))) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00690}00690       \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.swap(b);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00691}00691       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00692}00692    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00693}00693 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00699}00699    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00700}00700    \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} operator()(T (\&\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}})[N], T (\&b)[N]) \textcolor{keyword}{const}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00701}00701        \textcolor{keyword}{noexcept}(std::is\_nothrow\_move\_constructible<T>::value and}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00702}00702                     std::is\_nothrow\_move\_assignable<T>::value) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00703}00703       \textcolor{keywordflow}{for} (std::size\_t i = 0; i < N; ++i) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00704}00704          \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}[i], b[i]);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00705}00705       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00706}00706    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00707}00707 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00713}00713    template <typename T, enable\_if\_t<is\_tuple\_like<T>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00714}00714                                          and not has\_member\_swap<T>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00715}00715                                      std::size\_t>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00716}00716                              N}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00717}00717                          = std::tuple\_size<T>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00718}00718    \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} operator()(T\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, T\& b) \textcolor{keyword}{const} \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00719}00719        \mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{detail::swap\_tuple\_impl}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, std::make\_index\_sequence<N>\{\}))) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00720}00720       \mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{detail::swap\_tuple\_impl}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, b, std::make\_index\_sequence<N>\{\});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00721}00721    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00722}\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{00722}} \} \mbox{\hyperlink{tdecl_8h_a35b356d58929dd3ae764e8291838f5be}{KBLIB\_CONSTANT}} \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00723}00723 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00724}00724 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} U = T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00725}\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{00725}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{exchange}}(T\& obj, U\&\& new\_value) -\/> T \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00726}00726    T old\_value = std::move(obj);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00727}00727    obj = std::forward<U>(new\_value);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00728}00728    \textcolor{keywordflow}{return} old\_value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00729}00729 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00730}00730 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00731}00731 \textcolor{preprocessor}{\#if KBLIB\_USE\_CXX17}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00732}00732 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00733}00733 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00734}00734 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00735}00735    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00736}\mbox{\hyperlink{namespacekblib_1_1detail_ac83b1d792994abd35a99b63c8732c2a7}{00736}}    \textcolor{keyword}{constexpr} std::intmax\_t \mbox{\hyperlink{namespacekblib_1_1detail_ac83b1d792994abd35a99b63c8732c2a7}{max\_val}} = \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::numeric\_limits<T>::max}}();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00737}00737 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00738}\mbox{\hyperlink{namespacekblib_1_1detail_add427a975267711b7a1a94fc13aab8b4}{00738}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_add427a975267711b7a1a94fc13aab8b4}{msb}}(std::uintmax\_t x) -\/> std::uintmax\_t \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00739}00739       x |= (x >> 1u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00740}00740       x |= (x >> 2u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00741}00741       x |= (x >> 4u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00742}00742       x |= (x >> 8u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00743}00743       x |= (x >> 16u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00744}00744       x |= (x >> 32u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00745}00745       \textcolor{keywordflow}{return} (x \& \string~(x >> 1u));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00746}00746    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00747}00747 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00748}00748    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Num>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00749}\mbox{\hyperlink{namespacekblib_1_1detail_a7862ff8e4fb97f3ad170829296360714}{00749}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail_a7862ff8e4fb97f3ad170829296360714}{msb\_possible}}() -\/> Num \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00750}00750       \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}Num\textcolor{keyword}{>}(\textcolor{keyword}{typename} std::make\_unsigned<Num>::type\{1\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00751}00751                               << (std::numeric\_limits<Num>::digits -\/ 1u));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00752}00752    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00753}00753 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00754}00754    \textcolor{keyword}{template} <\textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00755}\mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{00755}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{type\_list}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00756}00756       \textcolor{keyword}{template} <std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00757}\mbox{\hyperlink{structkblib_1_1detail_1_1type__list_af9b78de50475d1f25d3c17ef9ed40158}{00757}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__list_af9b78de50475d1f25d3c17ef9ed40158}{type}} = \textcolor{keyword}{typename} std::tuple\_element<N, std::tuple<Args...>>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00758}00758    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00759}00759 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00760}00760    \textcolor{keyword}{template} <auto K, \textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00761}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{00761}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{type\_map\_el}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00762}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_aa7752e8a6852571de51efbaead5e2815}{00762}}       \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} key = K;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00763}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_a9cc3a148b50fd187c327cc3822723e9f}{00763}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_a9cc3a148b50fd187c327cc3822723e9f}{value}} = V;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00764}00764    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00765}00765 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00766}00766    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Key, \textcolor{keyword}{typename} Comp, \textcolor{keyword}{typename}... Vals>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00767}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{00767}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{type\_map}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00768}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ac46a6c0218d447a7daeb03500701d98f}{00768}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{types}} = \mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{type\_list}}<Vals...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00769}00769       \textcolor{keyword}{template} <std::\textcolor{keywordtype}{size\_t} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00770}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ad39a036eb477e8fe86aa404be194c5e0}{00770}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ad39a036eb477e8fe86aa404be194c5e0}{element}} = \textcolor{keyword}{typename} types::template type<I>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00771}00771 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00772}00772       \textcolor{keyword}{template} <Key key, std::\textcolor{keywordtype}{size\_t} I = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00773}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a7866fc83674297e0b4e389b240bc3d9d}{00773}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a7866fc83674297e0b4e389b240bc3d9d}{get}}() noexcept -\/> auto \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00774}00774          \textcolor{keyword}{static\_assert}(I < \textcolor{keyword}{sizeof}...(Vals), \textcolor{stringliteral}{"{}key not found"{}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00775}00775          \textcolor{keywordflow}{if} \textcolor{keyword}{constexpr} (Comp\{\}(key, \mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ad39a036eb477e8fe86aa404be194c5e0}{element<I>::key}})) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00776}00776             \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1detail_1_1tag}{tag<typename element<I>::value}}>\{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00777}00777          \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00778}00778             \textcolor{keywordflow}{return} get<key, I + 1>();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00779}00779          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00780}00780       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00781}00781 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00782}00782       \textcolor{keyword}{template} <Key key, \textcolor{keyword}{typename} Default = \textcolor{keywordtype}{void}, std::\textcolor{keywordtype}{size\_t} I = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00783}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a5ce80e6f4604a13bc7ad117410b4e567}{00783}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a5ce80e6f4604a13bc7ad117410b4e567}{get\_default}}() noexcept -\/> auto \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00784}00784          \textcolor{keywordflow}{if} \textcolor{keyword}{constexpr} (I == \textcolor{keyword}{sizeof}...(Vals)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00785}00785             \textcolor{keywordflow}{return} Default();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00786}00786          \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} \textcolor{keyword}{constexpr} (Comp\{\}(key, \mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ad39a036eb477e8fe86aa404be194c5e0}{element<I>::key}})) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00787}00787             \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1detail_1_1tag}{tag<typename element<I>::value}}>\{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00788}00788          \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00789}00789             \textcolor{keywordflow}{return} get<key, I + 1>();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00790}00790          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00791}00791       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00792}00792    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00793}00793 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00794}00794    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00795}\mbox{\hyperlink{namespacekblib_1_1detail_aa78d53d4378e2b944726396fd2ea2cbc}{00795}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00796}00796        = \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{type\_map\_el<static\_cast<std::intmax\_t>}}(msb\_possible<N>()), N>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00797}00797 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00798}00798    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00799}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{00799}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{next\_larger\_signed}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00800}00800       \textcolor{keyword}{static\_assert}(max\_val<T> < max\_val<std::intmax\_t>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00801}00801                     \textcolor{stringliteral}{"{}Cannot safely promote intmax\_t."{}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00802}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare}{00802}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare}{false\_compare}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00803}00803          \textcolor{keyword}{template} <\textcolor{keyword}{typename} U>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00804}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare_a579b2f66a05f77c375c10b16b2c76bad}{00804}}          \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare_a579b2f66a05f77c375c10b16b2c76bad}{operator()}}(U, U) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00805}00805             \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00806}00806          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00807}00807       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00808}00808 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00809}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_ae123b508ad182e3fc2df972431818cda}{00809}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{ints\_map}} = \mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{type\_map}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00810}00810           std::intmax\_t, std::less<>, \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el<std::int\_least8\_t>}},}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00811}00811           \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el<std::int\_least16\_t>}}, \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el<std::int\_least32\_t>}},}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00812}00812           \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el<std::int\_least64\_t>}}, \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el<std::intmax\_t>}}>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00813}00813 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00814}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_aeca02a2e87733928ddb3194131408270}{00814}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_aeca02a2e87733928ddb3194131408270}{type}} = \textcolor{keyword}{typename} \textcolor{keyword}{decltype}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00815}00815           ints\_map::template get\_default<max\_val<T> + 1>())::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00816}00816    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00817}00817 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00818}00818    template <typename N, bool = std::is\_signed<N>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00819}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{00819}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{filter\_signed}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00820}00820 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00821}00821    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00822}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4}{00822}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{filter\_signed}}<N, true> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00823}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4_a12d6af71c2dfa80bca6ca5556896dd33}{00823}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4_a12d6af71c2dfa80bca6ca5556896dd33}{type}} = N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00824}00824    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00825}00825 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00826}00826    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00827}\mbox{\hyperlink{namespacekblib_1_1detail_a81503c6f3c66c26bcacc9a672cdc1679}{00827}}    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1detail_a81503c6f3c66c26bcacc9a672cdc1679}{filter\_signed\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{filter\_signed<N>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00828}00828 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00829}00829    template <typename N, bool = std::is\_unsigned<N>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00830}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{00830}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{filter\_unsigned}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00831}00831 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00832}00832    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00833}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4}{00833}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{filter\_unsigned}}<N, true> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00834}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4_a370236ef5a93fc840717b9322fdebf3f}{00834}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4_a370236ef5a93fc840717b9322fdebf3f}{type}} = N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00835}00835    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00836}00836 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00837}00837    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00838}\mbox{\hyperlink{namespacekblib_1_1detail_a1d5a56a57c2822f86888933c0fac7164}{00838}}    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1detail_a1d5a56a57c2822f86888933c0fac7164}{filter\_unsigned\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{filter\_unsigned<N>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00839}00839 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00840}00840 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00841}00841 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00842}00842 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00843}\mbox{\hyperlink{structkblib_1_1safe__signed}{00843}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1safe__signed}{safe\_signed}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00844}00844 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00845}00845 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00846}\mbox{\hyperlink{structkblib_1_1safe__signed_3_01_n_00_01std_1_1enable__if__t_3_01std_1_1is__integral_3_01_n_01_4_1_1value_00_01void_01_4_01_4}{00846}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1safe__signed}{safe\_signed}}<N, \mbox{\hyperlink{namespacestd}{std}}::\mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<std::is\_integral<N>::value, void>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00847}\mbox{\hyperlink{structkblib_1_1safe__signed_3_01_n_00_01std_1_1enable__if__t_3_01std_1_1is__integral_3_01_n_01_4_1_1value_00_01void_01_4_01_4_af70e8b9b524627a2f9dff053156e57ab}{00847}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1safe__signed_3_01_n_00_01std_1_1enable__if__t_3_01std_1_1is__integral_3_01_n_01_4_1_1value_00_01void_01_4_01_4_af70e8b9b524627a2f9dff053156e57ab}{type}} = std::conditional\_t<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00848}00848        std::is\_signed<N>::value, N,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00849}00849        \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{detail::next\_larger\_signed<std::make\_signed\_t<N>}}>::type>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00850}00850 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00851}00851 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00852}00852 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00853}\mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{00853}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{safe\_signed\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1safe__signed}{safe\_signed<N>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00854}00854 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00855}00855 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00856}\mbox{\hyperlink{namespacekblib_ae842572db70fc0a71d6ea2c2c33f3eff}{00856}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae842572db70fc0a71d6ea2c2c33f3eff}{signed\_promote}}(N x) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00857}00857     -\/> \mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{safe\_signed\_t<N>}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00858}00858    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{safe\_signed\_t<N>}}\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00859}00859 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00860}00860 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00861}00861 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00862}00862 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00863}00863 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00864}00864           \textcolor{keywordtype}{bool} = std::is\_const<typename std::remove\_reference<C>::type>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00865}\mbox{\hyperlink{structkblib_1_1copy__const}{00865}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1copy__const}{copy\_const}} : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<T> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00866}00866 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00867}00867 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00868}\mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_00_01true_01_4}{00868}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1copy__const}{copy\_const}}<C, T, true> : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<const T> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00869}00869 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00870}00870 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00871}\mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_01_6_00_01true_01_4}{00871}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1copy__const}{copy\_const}}<C, T\&, \textcolor{keyword}{true}> : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type<const T\&>}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00872}00872 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00873}00873 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00874}\mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_01_6_6_00_01true_01_4}{00874}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1copy__const}{copy\_const}}<C, T\&\&, \textcolor{keyword}{true}> : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type<const T\&\&>}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00875}00875 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00876}00876 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00877}\mbox{\hyperlink{namespacekblib_af973fdd9c2dddf6db3744ae83902fc72}{00877}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_af973fdd9c2dddf6db3744ae83902fc72}{copy\_const\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4_ade1ca6c1fcb0cb4c59dce18d0ea45d1e}{copy\_const<C, V>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00878}00878 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00879}00879 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00880}\mbox{\hyperlink{structkblib_1_1value__detected}{00880}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__detected}{value\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00881}00881 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00882}00882 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00883}\mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4}{00883}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__detected}{value\_detected}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename T::value\_type>> : std::true\_type \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00884}\mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4_a2f16a90dde6aa2d443b757c4d8585229}{00884}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4_a2f16a90dde6aa2d443b757c4d8585229}{type}} = \textcolor{keyword}{typename} T::value\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00885}00885 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00886}00886 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00887}00887 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00888}\mbox{\hyperlink{namespacekblib_a927171c113d5559da2f0f2245ed5e9da}{00888}} \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_a927171c113d5559da2f0f2245ed5e9da}{value\_detected\_v}} = \mbox{\hyperlink{structkblib_1_1value__detected}{value\_detected<T>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00889}00889 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00890}\mbox{\hyperlink{namespacekblib_aa0f56c295f64726c092c84a77f025a85}{00890}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_aa0f56c295f64726c092c84a77f025a85}{value\_detected\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1value__detected}{value\_detected<T>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00891}00891 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00892}00892 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00893}\mbox{\hyperlink{structkblib_1_1key__detected}{00893}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__detected}{key\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00894}00894 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00895}00895 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00896}\mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4}{00896}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__detected}{key\_detected}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename T::key\_type>> : std::true\_type \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00897}\mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4_af03ad777cfe8638ba072a670a97114d8}{00897}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4_af03ad777cfe8638ba072a670a97114d8}{type}} = \textcolor{keyword}{typename} T::key\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00898}00898 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00899}00899 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00900}00900 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00901}\mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{00901}} \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{key\_detected\_v}} = \mbox{\hyperlink{structkblib_1_1key__detected}{key\_detected<T>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00902}00902 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00903}\mbox{\hyperlink{namespacekblib_ac84fd1f7586e640147679a7c24a746d8}{00903}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ac84fd1f7586e640147679a7c24a746d8}{key\_detected\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1key__detected}{key\_detected<T>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00904}00904 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00905}00905 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00906}\mbox{\hyperlink{structkblib_1_1mapped__detected}{00906}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1mapped__detected}{mapped\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00907}00907 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00908}00908 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00909}\mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4}{00909}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1mapped__detected}{mapped\_detected}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename T::mapped\_type>> : std::true\_type \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00910}\mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4_aa9584b91eef793c467ae6ad931d4879c}{00910}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4_aa9584b91eef793c467ae6ad931d4879c}{type}} = \textcolor{keyword}{typename} T::mapped\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00911}00911 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00912}00912 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00913}00913 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00914}\mbox{\hyperlink{namespacekblib_a13ab67cd7841362d9e8da411066ca974}{00914}} \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_a13ab67cd7841362d9e8da411066ca974}{mapped\_detected\_v}} = \mbox{\hyperlink{structkblib_1_1mapped__detected}{mapped\_detected<T>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00915}00915 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00916}\mbox{\hyperlink{namespacekblib_aea08f7e56313388f4681f002a13793ba}{00916}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_aea08f7e56313388f4681f002a13793ba}{mapped\_detected\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1mapped__detected}{mapped\_detected<T>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00917}00917 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00918}00918 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00919}\mbox{\hyperlink{structkblib_1_1hash__detected}{00919}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1hash__detected}{hash\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00920}00920 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00921}00921 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00922}\mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4}{00922}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1hash__detected}{hash\_detected}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename T::hasher>> : std::true\_type \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00923}\mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4_aebffeb8d48976dcddb56d2299a9ba638}{00923}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4_aebffeb8d48976dcddb56d2299a9ba638}{type}} = \textcolor{keyword}{typename} T::hasher;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00924}00924 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00925}00925 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00926}00926 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00927}\mbox{\hyperlink{namespacekblib_adbb2b4e744a5f165142f9a49cf5fa8b4}{00927}} \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_adbb2b4e744a5f165142f9a49cf5fa8b4}{hash\_detected\_v}} = \mbox{\hyperlink{structkblib_1_1hash__detected}{hash\_detected<T>::value}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00928}00928 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00929}\mbox{\hyperlink{namespacekblib_a73fd7f69e7f6233d2c480a16e86b03a0}{00929}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a73fd7f69e7f6233d2c480a16e86b03a0}{hash\_detected\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1hash__detected}{hash\_detected<T>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00930}00930 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00931}00931 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keywordtype}{bool} = key\_detected\_v<Container>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00932}00932           \textcolor{keyword}{typename} T = \textcolor{keyword}{typename} Container::value\_type>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00933}\mbox{\hyperlink{structkblib_1_1value__type__linear}{00933}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__type__linear}{value\_type\_linear}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00934}00934 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00935}00935 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00936}\mbox{\hyperlink{structkblib_1_1value__type__linear_3_01_container_00_01false_00_01typename_01_container_1_1value__type_01_4}{00936}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__type__linear}{value\_type\_linear}}<Container, false, typename Container::value\_type>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00937}00937     : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<typename Container::value\_type> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00938}00938 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00939}00939 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00940}\mbox{\hyperlink{namespacekblib_ac04bc7261d579d570a3847df654bc209}{00940}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ac04bc7261d579d570a3847df654bc209}{value\_type\_linear\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1value__type__linear}{value\_type\_linear<Container>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00941}00941 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00942}00942 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00943}00943 \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} is\_linear\_container\_v}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00944}00944     = value\_detected\_v<Container> and not key\_detected\_v<Container>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00945}00945 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00946}00946 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00947}\mbox{\hyperlink{structkblib_1_1is__linear__container}{00947}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__linear__container}{is\_linear\_container}} : \mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{bool\_constant}}<is\_linear\_container\_v<Container>> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00948}00948 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00949}00949 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keywordtype}{bool} = key\_detected\_v<Container>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00950}00950           \textcolor{keywordtype}{bool} = mapped\_detected\_v<Container>>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00951}\mbox{\hyperlink{structkblib_1_1key__type__setlike}{00951}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__type__setlike}{key\_type\_setlike}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00952}00952 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00953}00953 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00954}\mbox{\hyperlink{structkblib_1_1key__type__setlike_3_01_container_00_01true_00_01false_01_4}{00954}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__type__setlike}{key\_type\_setlike}}<Container, true, false>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00955}00955     : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<typename Container::key\_type> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00956}00956 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00957}00957 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00958}\mbox{\hyperlink{namespacekblib_a08c333aaa30dec55fb9d3e7d616093bd}{00958}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a08c333aaa30dec55fb9d3e7d616093bd}{key\_type\_setlike\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1key__type__setlike}{key\_type\_setlike<Container>::type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00959}00959 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00960}00960 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00961}00961 \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} is\_setlike\_v}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00962}00962     = (\mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{key\_detected\_v}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00963}00963            Container> and value\_detected\_v<Container> and not mapped\_detected\_v<Container> and std::is\_same<key\_detected\_t<Container>, \mbox{\hyperlink{namespacekblib_aa0f56c295f64726c092c84a77f025a85}{value\_detected\_t<Container>}}>::value);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00964}00964 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00965}00965 \textcolor{keyword}{template} <\textcolor{keyword}{class} InputIt1, \textcolor{keyword}{class} InputIt2>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00966}\mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{00966}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(InputIt1 first1, InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00967}00967                                      InputIt2 first2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00968}00968    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00969}00969       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00970}00970          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00971}00971       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00972}00972    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00973}00973    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00974}00974 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00975}00975 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00976}00976 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00977}00977           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00978}00978               not std::is\_same<InputIt2, BinaryPredicate>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00979}\mbox{\hyperlink{namespacekblib_a4b33292eab2082159622b9c062b665c0}{00979}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(InputIt1 first1, InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00980}00980                                      InputIt2 first2, BinaryPredicate p)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00981}00981     -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00982}00982    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00983}00983       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00984}00984          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00985}00985       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00986}00986    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00987}00987    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00988}00988 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00989}00989 \textcolor{keyword}{template} <\textcolor{keyword}{class }RandomIt1, \textcolor{keyword}{class }RandomIt2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00990}00990           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00991}00991               std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00992}00992                               \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00993}00993                                   RandomIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00994}00994                   and std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00995}00995                                       \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00996}00996                                           RandomIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00997}00997               \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00998}\mbox{\hyperlink{namespacekblib_aa5cefb6480de50ffafc875fedc55538a}{00998}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(RandomIt1 first1, RandomIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00999}00999                                      RandomIt2 first2, RandomIt2 last2)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01000}01000     -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01001}01001    \textcolor{keywordflow}{if} (std::distance(first1, last1) == std::distance(first2, last2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01002}01002       \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01003}01003    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01004}01004    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01005}01005       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01006}01006          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01007}01007       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01008}01008    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01009}01009    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01010}01010 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01011}01011 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01012}01012 \textcolor{keyword}{template} <\textcolor{keyword}{class }RandomIt1, \textcolor{keyword}{class }RandomIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01013}01013           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01014}01014               std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01015}01015                               \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01016}01016                                   RandomIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01017}01017                   and std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01018}01018                                       \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01019}01019                                           RandomIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01020}01020               \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01021}\mbox{\hyperlink{namespacekblib_a391794b2905afd47e4ba541643472d33}{01021}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(RandomIt1 first1, RandomIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01022}01022                                      RandomIt2 first2, RandomIt2 last2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01023}01023                                      BinaryPredicate p) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01024}01024    \textcolor{keywordflow}{if} (std::distance(first1, last1) == std::distance(first2, last2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01025}01025       \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01026}01026    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01027}01027    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01028}01028       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01029}01029          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01030}01030       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01031}01031    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01032}01032    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01033}01033 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01034}01034 \textcolor{keyword}{template} <}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01035}01035     \textcolor{keyword}{class }InputIt1, \textcolor{keyword}{class }InputIt2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01036}01036     \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01037}01037         not std::is\_base\_of<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01038}01038             std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01039}01039             \textcolor{keyword}{typename} std::iterator\_traits<InputIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01040}01040             or not std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01041}01041                                    \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01042}01042                                        InputIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01043}01043         \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01044}\mbox{\hyperlink{namespacekblib_a131eb5b6f49dfb59ab977a066d1869e7}{01044}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(InputIt1 first1, InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01045}01045                                      InputIt2 first2, InputIt2 last2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01046}01046    \textcolor{keywordflow}{for} (; first1 != last1 and first2 != last2; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01047}01047       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01048}01048          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01049}01049       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01050}01050    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01051}01051    \textcolor{keywordflow}{return} (first1 == last1 and first2 == last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01052}01052 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01053}01053 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01054}01054 \textcolor{keyword}{template} <}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01055}01055     \textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01056}01056     \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01057}01057         not std::is\_base\_of<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01058}01058             std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01059}01059             \textcolor{keyword}{typename} std::iterator\_traits<InputIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01060}01060             or not std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01061}01061                                    \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01062}01062                                        InputIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01063}01063         \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01064}\mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{01064}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{equal}}(InputIt1 first1, InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01065}01065                                      InputIt2 first2, InputIt2 last2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01066}01066                                      BinaryPredicate p) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01067}01067    \textcolor{keywordflow}{for} (; first1 != last1 and first2 != last2; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01068}01068       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01069}01069          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01070}01070       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01071}01071    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01072}01072    \textcolor{keywordflow}{return} (first1 == last1 and first2 == last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01073}01073 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01074}01074 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01075}01075 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01076}\mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{01076}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{size}}(\textcolor{keyword}{const} C\& c) -\/> \textcolor{keyword}{decltype}(c.size()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01077}01077    \textcolor{keywordflow}{return} c.size();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01078}01078 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01079}01079 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01080}01080 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01081}\mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{01081}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{size}}(\textcolor{keyword}{const} T (\&)[N]) \textcolor{keyword}{noexcept} -\/> std::size\_t \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01082}01082    \textcolor{keywordflow}{return} N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01083}01083 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01084}01084 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01085}01085 \textcolor{keyword}{template} <\textcolor{keyword}{class} InputIt1, \textcolor{keyword}{class} InputIt2>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01086}\mbox{\hyperlink{namespacekblib_aec67bf14d264f3587e3b86645af62d2a}{01086}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aec67bf14d264f3587e3b86645af62d2a}{lexicographical\_compare}}(InputIt1 first1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01087}01087                                                        InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01088}01088                                                        InputIt2 first2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01089}01089                                                        InputIt2 last2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01090}01090    \textcolor{keywordflow}{for} (; (first1 != last1) and (first2 != last2); ++first1, (void)++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01091}01091       \textcolor{keywordflow}{if} (*first1 < *first2)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01092}01092          \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01093}01093       \textcolor{keywordflow}{if} (*first2 < *first1)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01094}01094          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01095}01095    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01096}01096    \textcolor{keywordflow}{return} (first1 == last1) and (first2 != last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01097}01097 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01098}01098 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01099}01099 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01100}01100    \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01101}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{01101}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{pointer}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01102}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_a9fbf572b4e3d04390dbe158d5ff71fd6}{01102}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_a9fbf572b4e3d04390dbe158d5ff71fd6}{type}} = T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01103}01103    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01104}01104 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01105}01105    \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01106}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_3_01_d_00_01_t_00_01void__t_3_01typename_01_d_1_1pointer_01_4_01_4}{01106}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{pointer}}<D, T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<typename D::\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{pointer}}>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01107}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_3_01_d_00_01_t_00_01void__t_3_01typename_01_d_1_1pointer_01_4_01_4_a46e9d3a24e5e3541b96c1ddff754fd79}{01107}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_3_01_d_00_01_t_00_01void__t_3_01typename_01_d_1_1pointer_01_4_01_4_a46e9d3a24e5e3541b96c1ddff754fd79}{type}} = \textcolor{keyword}{typename} D::pointer;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01108}01108    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01109}01109 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01110}01110 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01111}01111 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01112}\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{01112}} \textcolor{keyword}{constexpr} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{in\_place\_agg\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01113}\mbox{\hyperlink{namespacekblib_af44abb883b069d84630176b4b8cd26f6}{01113}} \} \mbox{\hyperlink{namespacekblib_af44abb883b069d84630176b4b8cd26f6}{in\_place\_agg}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01114}01114 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01115}01115 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01116}\mbox{\hyperlink{classkblib_1_1heap__value}{01116}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01117}01117  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01118}\mbox{\hyperlink{classkblib_1_1heap__value_a31771fe307c302f90d3ac2298cc7f92a}{01118}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_a31771fe307c302f90d3ac2298cc7f92a}{element\_type}} = T;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01119}\mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{01119}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{pointer}} = T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01120}\mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{01120}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{const\_pointer}} = \textcolor{keyword}{const} T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01121}\mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{01121}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{reference}} = T\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01122}\mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{01122}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{const\_reference}} = \textcolor{keyword}{const} T\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01123}01123 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01124}\mbox{\hyperlink{classkblib_1_1heap__value_a3d43ebc6e7df6ceaeeb9458d9c2dc89c}{01124}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1heap__value_a3d43ebc6e7df6ceaeeb9458d9c2dc89c}{heap\_value}}() noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01125}01125        : p\{\textcolor{keyword}{nullptr}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01126}\mbox{\hyperlink{classkblib_1_1heap__value_a8ca0b4fe8932901dc385cc7882e26eeb}{01126}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1heap__value_a8ca0b4fe8932901dc385cc7882e26eeb}{heap\_value}}(std::nullptr\_t) noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01127}01127        : p\{\textcolor{keyword}{nullptr}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01128}01128 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01129}01129    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01130}01130              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<std::is\_constructible<T, Args...>::value> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01131}\mbox{\hyperlink{classkblib_1_1heap__value_acdda17b531e2170ef3927472d98ac12b}{01131}}    \mbox{\hyperlink{classkblib_1_1heap__value_acdda17b531e2170ef3927472d98ac12b}{heap\_value}}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{fakestd::in\_place\_t}}, Args\&\&... args)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01132}01132        : p\{new T(args...)\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01133}01133    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01134}\mbox{\hyperlink{classkblib_1_1heap__value_ac3c4a9f23acb5d0cc45eb9a6dc959f02}{01134}}    \mbox{\hyperlink{classkblib_1_1heap__value_ac3c4a9f23acb5d0cc45eb9a6dc959f02}{heap\_value}}(\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{in\_place\_agg\_t}}, Args\&\&... args)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01135}01135        : p\{new T\{args...\}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01136}01136 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01137}\mbox{\hyperlink{classkblib_1_1heap__value_ac3df0b831c9da1cb73b1e38bcc36dab2}{01137}}    \mbox{\hyperlink{classkblib_1_1heap__value_ac3df0b831c9da1cb73b1e38bcc36dab2}{heap\_value}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& u)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01138}01138        : p\{(u.p ? (new T(*u.p)) : nullptr)\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01139}\mbox{\hyperlink{classkblib_1_1heap__value_a13ca53ac109cd8b11315215e639fe56c}{01139}}    \mbox{\hyperlink{classkblib_1_1heap__value_a13ca53ac109cd8b11315215e639fe56c}{heap\_value}}(\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\&\& u) noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01140}01140        : p\{\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(u.p, \textcolor{keyword}{nullptr})\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01141}01141 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01142}\mbox{\hyperlink{classkblib_1_1heap__value_ae6f3c413dc51d599b41a68f98205744a}{01142}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_ae6f3c413dc51d599b41a68f98205744a}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& u) \& -\/> \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01143}01143       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01144}01144          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01145}01145       \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (not u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01146}01146          p.\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01147}01147       \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (p) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01148}01148          *p = *u;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01149}01149       \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01150}01150          p.reset(\textcolor{keyword}{new} T(*u.p));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01151}01151       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01152}01152       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01153}01153    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01154}01154 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01155}\mbox{\hyperlink{classkblib_1_1heap__value_a63d7ae9dab3ce5527fe73e17e2b6deb5}{01155}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a63d7ae9dab3ce5527fe73e17e2b6deb5}{operator=}}(\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\&\& u) \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01156}01156       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01157}01157          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01158}01158       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01159}01159       p = \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(u.p, \textcolor{keyword}{nullptr});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01160}01160       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01161}01161    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01162}01162 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01163}\mbox{\hyperlink{classkblib_1_1heap__value_a3572a0bb551ebb1db3d8aa398700fa77}{01163}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a3572a0bb551ebb1db3d8aa398700fa77}{operator=}}(\textcolor{keyword}{const} T\& val) \& -\/> \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01164}01164       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&val) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01165}01165          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01166}01166       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01167}01167       p.\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}(\textcolor{keyword}{new} T(val));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01168}01168    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01169}\mbox{\hyperlink{classkblib_1_1heap__value_a5e674185015a5fa6baa874be8c19bbe2}{01169}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a5e674185015a5fa6baa874be8c19bbe2}{operator=}}(T\&\& val) \& -\/> \mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01170}01170       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&val) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01171}01171          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01172}01172       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01173}01173       p.\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}(\textcolor{keyword}{new} T(std::move(val)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01174}01174    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01175}01175 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01176}\mbox{\hyperlink{classkblib_1_1heap__value_a57a2c49a83b15e8d448e1c3e443a02cf}{01176}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a57a2c49a83b15e8d448e1c3e443a02cf}{assign}}() \& -\/> \textcolor{keywordtype}{void} \{ p.reset(\textcolor{keyword}{new} T()); \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01177}\mbox{\hyperlink{classkblib_1_1heap__value_a91d43de8663d750301ba482db20fd3f3}{01177}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a91d43de8663d750301ba482db20fd3f3}{assign}}(\textcolor{keyword}{const} T\& val) \& -\/> \textcolor{keywordtype}{void} \{ p.reset(\textcolor{keyword}{new} T(val)); \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01178}\mbox{\hyperlink{classkblib_1_1heap__value_a5e8a0d229f6993a66e938149ec1c678c}{01178}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a5e8a0d229f6993a66e938149ec1c678c}{assign}}(T\&\& val) \& -\/> \textcolor{keywordtype}{void} \{ p.reset(\textcolor{keyword}{new} T(std::move(val))); \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01179}01179    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01180}01180              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<std::is\_constructible<T, Args...>::value> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01181}\mbox{\hyperlink{classkblib_1_1heap__value_a484748dc55235a3d97bc60c8965b11e2}{01181}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a484748dc55235a3d97bc60c8965b11e2}{assign}}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{fakestd::in\_place\_t}}, Args\&\&... args) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01182}01182       p.reset(\textcolor{keyword}{new} T(std::forward<Args>(args)...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01183}01183    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01184}01184    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01185}\mbox{\hyperlink{classkblib_1_1heap__value_a32c2e2caadb585b6d2f2bc70e41d8be2}{01185}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a32c2e2caadb585b6d2f2bc70e41d8be2}{assign}}(\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{in\_place\_agg\_t}}, Args\&\&... args) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01186}01186       p.reset(\textcolor{keyword}{new} T\{std::forward<Args>(args)...\});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01187}01187    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01188}01188 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01189}\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{01189}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}() noexcept -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01190}01190       p.reset();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01191}01191       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01192}01192    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01193}01193 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01194}\mbox{\hyperlink{classkblib_1_1heap__value_a97a382742abd905335e8391ec6b3c70b}{01194}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const\& noexcept \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01195}01195       \textcolor{keywordflow}{return} p != \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01196}01196    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01197}01197 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01198}\mbox{\hyperlink{classkblib_1_1heap__value_a624e5536509335d942dbe30d198761a6}{01198}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a624e5536509335d942dbe30d198761a6}{swap}}(\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\& other) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01199}01199       \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{kblib::swap}}(p, other.p);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01200}01200    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01201}01201 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01202}\mbox{\hyperlink{classkblib_1_1heap__value_ac6f98460cea64400bb4df2cdbd00e29b}{01202}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_ac6f98460cea64400bb4df2cdbd00e29b}{get}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{pointer}} \{ \textcolor{keywordflow}{return} p.get(); \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01203}\mbox{\hyperlink{classkblib_1_1heap__value_a3a31864783f1742975235d0444e4b03e}{01203}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a3a31864783f1742975235d0444e4b03e}{get}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{const\_pointer}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01204}01204       \textcolor{keywordflow}{return} p.get();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01205}01205    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01206}01206 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01207}\mbox{\hyperlink{classkblib_1_1heap__value_a55ea38fca8c4cfb3a3be0da2a64d219e}{01207}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a55ea38fca8c4cfb3a3be0da2a64d219e}{value}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{reference}} \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01208}\mbox{\hyperlink{classkblib_1_1heap__value_a2a3fe3d47608438d94e7695fae91deb2}{01208}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a2a3fe3d47608438d94e7695fae91deb2}{value}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{const\_reference}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01209}01209       \textcolor{keywordflow}{return} *p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01210}01210    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01211}\mbox{\hyperlink{classkblib_1_1heap__value_a66cfd518de775b8c13fe95b1863fbd87}{01211}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a66cfd518de775b8c13fe95b1863fbd87}{value}}() \&\& \textcolor{keyword}{noexcept} -\/> T\&\& \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01212}\mbox{\hyperlink{classkblib_1_1heap__value_abd5be604caacda229c5d1e3643180e10}{01212}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_abd5be604caacda229c5d1e3643180e10}{value}}() const\&\& noexcept -\/> const T\&\& \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01213}01213 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01214}\mbox{\hyperlink{classkblib_1_1heap__value_a68762e9f23a9f2021a2b467a672142b9}{01214}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a68762e9f23a9f2021a2b467a672142b9}{operator*}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{reference}} \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01215}\mbox{\hyperlink{classkblib_1_1heap__value_a6ad73b0366093ce1e42a02ad3d0271d4}{01215}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a6ad73b0366093ce1e42a02ad3d0271d4}{operator*}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{const\_reference}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01216}01216       \textcolor{keywordflow}{return} *p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01217}01217    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01218}\mbox{\hyperlink{classkblib_1_1heap__value_ac722d1c6f94e89b19e46422899b7c372}{01218}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_ac722d1c6f94e89b19e46422899b7c372}{operator*}}() \&\& \textcolor{keyword}{noexcept} -\/> T\&\& \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01219}\mbox{\hyperlink{classkblib_1_1heap__value_a726e201d6c7a36975c590878941b1e86}{01219}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a726e201d6c7a36975c590878941b1e86}{operator*}}() const\&\& noexcept -\/> const T\&\& \{ \textcolor{keywordflow}{return} *p; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01220}01220 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01221}\mbox{\hyperlink{classkblib_1_1heap__value_aae02160de65bf17a56d3bc087a43e934}{01221}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_aae02160de65bf17a56d3bc087a43e934}{operator-\/>}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{pointer}} \{ \textcolor{keywordflow}{return} p.get(); \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01222}\mbox{\hyperlink{classkblib_1_1heap__value_a91853fc3048bfc19cc164fd2b7697397}{01222}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a91853fc3048bfc19cc164fd2b7697397}{operator-\/>}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{const\_pointer}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01223}01223       \textcolor{keywordflow}{return} p.get();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01224}01224    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01225}01225 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01226}\mbox{\hyperlink{classkblib_1_1heap__value_ac493c77a56367f2e07b1726de82eff2c}{01226}}    \mbox{\hyperlink{classkblib_1_1heap__value_ac493c77a56367f2e07b1726de82eff2c}{\string~heap\_value}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01227}01227 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01228}01228  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01229}01229    std::unique\_ptr<element\_type> p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01230}01230 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01231}01231 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01232}01232 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01233}\mbox{\hyperlink{classkblib_1_1heap__value2}{01233}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}} : \textcolor{keyword}{private} std::unique\_ptr<T, D> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01234}01234    \textcolor{keyword}{using }Base = std::unique\_ptr<T, D>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01235}01235 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01236}01236  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01237}01237    \textcolor{keyword}{using }typename Base::deleter\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01238}01238    \textcolor{keyword}{using }typename Base::element\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01239}01239    \textcolor{keyword}{using }typename Base::pointer;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01240}\mbox{\hyperlink{classkblib_1_1heap__value2_af1f37c8f41197973e1164c3d4a056229}{01240}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_af1f37c8f41197973e1164c3d4a056229}{reference}} = \textcolor{keyword}{decltype}(*std::declval<pointer>());}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01241}\mbox{\hyperlink{classkblib_1_1heap__value2_afb832b0199ac380e2a1a658578375ca6}{01241}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_afb832b0199ac380e2a1a658578375ca6}{const\_reference}} = \textcolor{keyword}{const} element\_type\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01242}01242 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01243}01243    \textcolor{keyword}{using }Base::Base;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01244}01244    \textcolor{keyword}{using }Base::operator=;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01245}\mbox{\hyperlink{classkblib_1_1heap__value2_a5c0e173d50e9ea8273e256126b546c0e}{01245}}    \mbox{\hyperlink{classkblib_1_1heap__value2_a5c0e173d50e9ea8273e256126b546c0e}{heap\_value2}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& other);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01246}\mbox{\hyperlink{classkblib_1_1heap__value2_a240b30d2a2084556b21f8190a6d0e1c4}{01246}}    \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& \mbox{\hyperlink{classkblib_1_1heap__value2_a240b30d2a2084556b21f8190a6d0e1c4}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& other);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01247}01247 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01248}01248    \textcolor{keyword}{using }Base::release;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01249}01249    \textcolor{keyword}{using }Base::reset;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01250}01250    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{Base::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01251}01251 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01252}01252    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{Base::get}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01253}01253    \textcolor{keyword}{using }Base::get\_deleter;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01254}01254    \textcolor{keyword}{using }Base::operator bool;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01255}01255 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01256}01256    \textcolor{keyword}{using }Base::operator*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01257}01257    \textcolor{keyword}{using }Base::operator-\/>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01258}01258 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01259}\mbox{\hyperlink{classkblib_1_1heap__value2_a77081f53b4476e936397ccf42a571a93}{01259}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_a77081f53b4476e936397ccf42a571a93}{value}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value2_af1f37c8f41197973e1164c3d4a056229}{reference}} \{ \textcolor{keywordflow}{return} **\textcolor{keyword}{this}; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01260}\mbox{\hyperlink{classkblib_1_1heap__value2_a8d4445d7f4bd90523dbce54ed8ef34e2}{01260}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_a8d4445d7f4bd90523dbce54ed8ef34e2}{value}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value2_afb832b0199ac380e2a1a658578375ca6}{const\_reference}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01261}01261       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01262}01262    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01263}\mbox{\hyperlink{classkblib_1_1heap__value2_a0276dc3dd41051c5b68233acafc50033}{01263}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_a0276dc3dd41051c5b68233acafc50033}{value}}() \&\& \textcolor{keyword}{noexcept} -\/> element\_type\&\& \{ \textcolor{keywordflow}{return} **\textcolor{keyword}{this}; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01264}\mbox{\hyperlink{classkblib_1_1heap__value2_ad4de6e28d53940d3be298389fe792191}{01264}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_ad4de6e28d53940d3be298389fe792191}{value}}() const\&\& noexcept -\/> const element\_type\&\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01265}01265       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01266}01266    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01267}01267 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01268}\mbox{\hyperlink{classkblib_1_1heap__value2_ade3cdd82536480c8dcba2b7dfd73c191}{01268}}    \mbox{\hyperlink{classkblib_1_1heap__value2_ade3cdd82536480c8dcba2b7dfd73c191}{\string~heap\_value2}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01269}01269 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01270}01270 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01271}01271 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01272}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4}{01272}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}<T[], D> : \textcolor{keyword}{private} std::unique\_ptr<T[], D> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01273}01273    \textcolor{keyword}{using }Base = std::unique\_ptr<T[], D>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01274}01274 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01275}01275  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01276}01276    \textcolor{keyword}{using }typename Base::deleter\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01277}01277    \textcolor{keyword}{using }typename Base::element\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01278}01278    \textcolor{keyword}{using }typename Base::pointer;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01279}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac8c531b70decdea8b1056a596b716973}{01279}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac8c531b70decdea8b1056a596b716973}{reference}} = element\_type\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01280}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac38ffa7fefb3fd2e19b1ca7b6ff5976e}{01280}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac38ffa7fefb3fd2e19b1ca7b6ff5976e}{const\_reference}} = \textcolor{keyword}{const} element\_type\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01281}01281 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01282}01282    \textcolor{keyword}{using }Base::Base;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01283}01283    \textcolor{keyword}{using }Base::operator=;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01284}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac01c4b7353ca7d4fef3f3b8ed4a49c1e}{01284}}    \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac01c4b7353ca7d4fef3f3b8ed4a49c1e}{heap\_value2}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& other);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01285}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a80b0f6686d44da8d11fe37d36891ddfb}{01285}}    \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a80b0f6686d44da8d11fe37d36891ddfb}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}}\& other);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01286}01286 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01287}01287    \textcolor{keyword}{using }Base::release;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01288}01288    \textcolor{keyword}{using }Base::reset;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01289}01289    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{Base::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01290}01290 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01291}01291    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{Base::get}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01292}01292    \textcolor{keyword}{using }Base::get\_deleter;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01293}01293    \textcolor{keyword}{using }Base::operator bool;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01294}01294 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01295}01295    \textcolor{keyword}{using }Base::operator[];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01296}01296 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01297}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a70de2999295169b199004b666e9cf1f7}{01297}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a70de2999295169b199004b666e9cf1f7}{value}}() \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac8c531b70decdea8b1056a596b716973}{reference}} \{ \textcolor{keywordflow}{return} **\textcolor{keyword}{this}; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01298}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a0b3434703643fa8845559e39c6068503}{01298}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a0b3434703643fa8845559e39c6068503}{value}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac38ffa7fefb3fd2e19b1ca7b6ff5976e}{const\_reference}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01299}01299       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01300}01300    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01301}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a3ca0ae5de5a1a427253d1f470184ffe8}{01301}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a3ca0ae5de5a1a427253d1f470184ffe8}{value}}() \&\& \textcolor{keyword}{noexcept} -\/> element\_type\&\& \{ \textcolor{keywordflow}{return} **\textcolor{keyword}{this}; \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01302}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_aad0a4b86c685bdec005bbd799b497a94}{01302}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_aad0a4b86c685bdec005bbd799b497a94}{value}}() const\&\& noexcept -\/> const element\_type\&\& \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01303}01303       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01304}01304    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01305}01305 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01306}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a735694fbc0c61c3e89cf761101b822d9}{01306}}    \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a735694fbc0c61c3e89cf761101b822d9}{\string~heap\_value2}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01307}01307 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01308}01308 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01309}01309 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01310}01310 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01311}01311 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// KBLIB\_FAKESTD\_H}}

\end{DoxyCode}
