\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{keyword}{template} <\textcolor{keywordtype}{bool} B, \textcolor{keyword}{typename} T = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00054}\mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{00054}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}} = \textcolor{keyword}{typename} std::enable\_if<B, T>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00056}00056 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00057}\mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{00057}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{decay\_t}} = \textcolor{keyword}{typename} std::decay<T>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00059}00059 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00060}\mbox{\hyperlink{namespacekblib_ad3067cf43d6c4d6d61e9bbb81c145cf9}{00060}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ad3067cf43d6c4d6d61e9bbb81c145cf9}{remove\_cvref\_t}} =}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00061}00061     \textcolor{keyword}{typename} std::remove\_reference<typename std::remove\_cv<T>::type>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00063}00063 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} v>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00064}\mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{00064}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{bool\_constant}} = std::integral\_constant<bool, v>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00066}00066 \textcolor{preprocessor}{\#if \_\_cpp\_lib\_constexpr\_functional}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00067}00067 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{std::invoke}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00068}00068 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00070}00070 \textcolor{preprocessor}{\#  if \_\_cpp\_lib\_apply}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00071}00071 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00072}00072 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00073}00073 \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_l00074}00074     std::forward<F>(f), std::forward\_as\_tuple(std::forward<Args>(args)...))))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00075}00075     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00076}00076    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{std::apply}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00077}00077                      std::forward\_as\_tuple(std::forward<Args>(args)...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00078}00078 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00080}00080 \textcolor{preprocessor}{\#  else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00082}00082 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00083}00083 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00084}00084    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00085}00085              enable\_if\_t<not std::is\_member\_pointer<remove\_cvref\_t<F>>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00086}00086                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00087}\mbox{\hyperlink{namespacekblib_1_1detail_a9fcbe60cc8d89d741dc327bee247fbcb}{00087}}    \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_l00088}00088        std::forward<F>(f)(std::forward<Args>(args)...))) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00089}00089       \textcolor{keywordflow}{return} std::forward<F>(f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00090}00090    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00092}00092    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Object, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00093}00093              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_pointer<remove\_cvref\_t<Object>}}>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00094}00094                              and std::is\_member\_function\_pointer<F>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00095}00095                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00096}\mbox{\hyperlink{namespacekblib_1_1detail_a3814b2a778b24c77c5b25f0ba6ee517a}{00096}}    \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_l00097}00097        \textcolor{keyword}{noexcept}((std::forward<Object>(obj).*f)(std::forward<Args>(args)...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00098}00098        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00099}00099       \textcolor{keywordflow}{return} (obj.*f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00100}00100    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00102}00102    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Pointer, \textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00103}00103              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_pointer<Pointer>::value}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00104}00104                              and std::is\_member\_function\_pointer<F>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00105}00105                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00106}\mbox{\hyperlink{namespacekblib_1_1detail_a45e19fa5297851e924dc28b9ca9ebc5c}{00106}}    \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_l00107}00107        \textcolor{keyword}{noexcept}((ptr-\/>*f)(std::forward<Args>(args)...))) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00108}00108       \textcolor{keywordflow}{return} (ptr-\/>*f)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00109}00109    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00111}00111    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Member, \textcolor{keyword}{typename} Object,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00112}00112              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_pointer<remove\_cvref\_t<Object>}}>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00113}00113                              and std::is\_member\_object\_pointer<Member>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00114}00114                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00115}\mbox{\hyperlink{namespacekblib_1_1detail_a53d75bc53ab7612ecbf8f31d4f125194}{00115}}    \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_l00116}00116        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00117}00117       \textcolor{keywordflow}{return} std::forward<Object>(obj).*mem;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00118}00118    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00119}00119 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00120}00120    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Member, \textcolor{keyword}{typename} Pointer,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00121}00121              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_pointer<Pointer>::value}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00122}00122                              and std::is\_member\_object\_pointer<Member>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00123}00123                          \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00124}\mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{00124}}    \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_l00125}00125        -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00126}00126       \textcolor{keywordflow}{return} ptr.*mem;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00127}00127    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00128}00128 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00129}00129 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00130}00130 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00131}\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{00131}} \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_l00132}00132     \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{detail::do\_invoke}}(std::forward<F>(f), std::forward<Args>(args)...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00133}00133     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00134}00134    \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_l00135}00135 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00137}00137 \textcolor{preprocessor}{\#  endif }\textcolor{comment}{// \_\_cpp\_lib\_apply}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00138}00138 \textcolor{preprocessor}{\#endif    }\textcolor{comment}{// \_\_cpp\_lib\_constexpr\_functional}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00139}00139 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00145}00145 \textcolor{preprocessor}{\#if KBLIB\_FAKESTD}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00146}00146 \textcolor{keyword}{namespace }fakestd \{ \textcolor{comment}{// C++14 implementation of C++17 void\_t, invoke\_result,}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00147}00147                     \textcolor{comment}{// (partially) is\_invocable, and is\_nothrow\_swappable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00148}00148    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00149}00149 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00156}00156    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00157}00157 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00158}00158       \textcolor{keyword}{template} <\textcolor{keyword}{typename} AlwaysVoid, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}...>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00159}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{00159}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{invoke\_result}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00160}00160       \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00161}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c}{00161}}       \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_l00162}00162                                                 std::declval<Args>()...))),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00163}00163                            F, Args...> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00164}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c_adab0a7190a459ea8dbe1d3c5fc777d82}{00164}}          \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_l00165}00165              = \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(std::declval<F>(), std::declval<Args>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00166}00166       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00167}00167    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00168}00168    \textcolor{keyword}{template} <\textcolor{keyword}{class }F, \textcolor{keyword}{class}... ArgTypes>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00169}\mbox{\hyperlink{structkblib_1_1fakestd_1_1invoke__result}{00169}}    \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_l00170}00170 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00171}00171    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... ArgTypes>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00172}\mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{00172}}    \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_l00173}00173 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00174}00174    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00175}\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{00175}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{make\_void}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00176}\mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void_a32600336002c580bdcfcb554d6a1fe47}{00176}}       \textcolor{keyword}{typedef} \textcolor{keywordtype}{void} \mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void_a32600336002c580bdcfcb554d6a1fe47}{type}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00177}00177    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00178}00178    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00179}\mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{00179}}    \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_l00180}00180 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00181}00181    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00182}00182       \textcolor{comment}{// ALL generic swap overloads MUST already have a declaration available at}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00183}00183       \textcolor{comment}{// this point.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00184}00184 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00185}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{00185}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{nat}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00186}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a2a82e62316cd64b6264012b218c62393}{00186}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a2a82e62316cd64b6264012b218c62393}{nat}}() = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00187}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a5c8258023f5fb115d91f8ee0ffd23379}{00187}}          \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_l00188}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a85e8b0b6d8f269fb97a93fbafda6c3da}{00188}}          \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_l00189}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a7657d3bbc43cabfa896d64a5a48a1112}{00189}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat_a7657d3bbc43cabfa896d64a5a48a1112}{\string~nat}}() = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00190}00190       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00192}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{00192}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{two}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00193}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two_ab8084020a36b55fcefbf3d77914c754d}{00193}}          \textcolor{keywordtype}{char} lx[2];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00194}00194       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00195}00195 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00196}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl}{00196}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl}{is\_referenceable\_impl}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00197}00197          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00198}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_acd6d49db87deecfee4be7665af29937f}{00198}}          \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_l00199}00199          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00200}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl_a2fa4b1898ff262b1c6fde11d4c259b53}{00200}}          \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_l00201}00201       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00202}00202 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00203}00203       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00204}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable}{00204}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable}{is\_referenceable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00205}00205           : std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00206}00206                 bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00207}00207                 not std::is\_same<decltype(is\_referenceable\_impl::test<Tp>(0)),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00208}00208                                  two>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00210}00210       \textcolor{keyword}{template} <\textcolor{keyword}{class }Tp, \textcolor{keyword}{class }Up = Tp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00211}00211                 \textcolor{keywordtype}{bool} NotVoid}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00212}00212                 = not std::is\_void<Tp>::value and not std::is\_void<Up>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00213}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{00213}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{swappable\_with}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00214}00214          \textcolor{keyword}{template} <\textcolor{keyword}{class} LHS, \textcolor{keyword}{class} RHS>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00215}00215          \textcolor{keyword}{static} \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<LHS>(), std::declval<RHS>()))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00216}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a921c5dff8c0d25033136c5003f5b8b2c}{00216}}          \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a921c5dff8c0d25033136c5003f5b8b2c}{test\_swap}}(\textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00217}00217          \textcolor{keyword}{template} <\textcolor{keyword}{class}, \textcolor{keyword}{class}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00218}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_aef6e8d4a031d000e4dfaf5ae482f70b3}{00218}}          \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_l00219}00219 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00220}00220          \textcolor{comment}{// Extra parens are needed for the C++03 definition of decltype.}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00221}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_ae2e5bf92c4cc27a7650ba85aeb1b7315}{00221}}          \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_l00222}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a7b5c2e2b0270662882da4bb85339a216}{00222}}          \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_l00223}00223 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00224}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_a6be72f9d93956ceb9ee2cb6c510ac276}{00224}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = not std::is\_same<swap1, nat>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00225}00225                                    and not std::is\_same<swap2, nat>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00226}00226       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00227}00227 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00228}00228       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00229}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_3_01_tp_00_01_up_00_01false_01_4}{00229}}       \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_l00230}00230 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00231}00231       \textcolor{keyword}{template} <\textcolor{keyword}{class }Tp, \textcolor{keyword}{class }Up = Tp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00232}00232                 \textcolor{keywordtype}{bool} Swappable = \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{swappable\_with<Tp, Up>::value}}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00233}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{00233}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{nothrow\_swappable\_with}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00234}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with_a9dfc59959316db8d9eb18e1b34589720}{00234}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00235}00235              \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<Tp>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00236}00236                   std::declval<Up>()))and \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(std::declval<Up>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00237}00237                                                         std::declval<Tp>()));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00238}00238       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00239}00239 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00240}00240       \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00241}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with_3_01_tp_00_01_up_00_01false_01_4}{00241}}       \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_l00242}00242 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00243}00243    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00245}00245    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00246}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{00246}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{is\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00247}00247        : \textcolor{keyword}{public} std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00248}00248                                        detail::swappable\_with<Tp\&>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00250}00250    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00251}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{00251}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{is\_nothrow\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00252}00252        : \textcolor{keyword}{public} std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00253}00253              bool, detail::nothrow\_swappable\_with<Tp\&>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00254}00254 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00255}00255 \textcolor{preprocessor}{\#  if KBLIB\_USE\_CXX17}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00256}00256 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00257}00257    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00258}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{00258}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{is\_swappable\_with}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00259}00259        : \textcolor{keyword}{public} std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00260}00260                                        detail::swappable\_with<Tp, Up>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00261}00261    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00262}00262 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00263}00263    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00264}00264    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{is\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00265}00265        : \textcolor{keyword}{public} std::conditional<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00266}00266              detail::is\_referenceable<Tp>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00267}00267              is\_swappable\_with<typename std::add\_lvalue\_reference<Tp>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00268}00268                                typename std::add\_lvalue\_reference<Tp>::type>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00269}00269              std::false\_type>::type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00271}00271    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00272}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{00272}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{is\_nothrow\_swappable\_with}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00273}00273        : \textcolor{keyword}{public} integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00274}00274              bool, detail::nothrow\_swappable\_with<Tp, Up>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00275}00275 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00276}00276    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00277}00277    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{is\_nothrow\_swappable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00278}00278        : \textcolor{keyword}{public} conditional<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00279}00279              detail::is\_referenceable<Tp>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00280}00280              is\_nothrow\_swappable\_with<typename add\_lvalue\_reference<Tp>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00281}00281                                        typename add\_lvalue\_reference<Tp>::type>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00282}00282              false\_type>::type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00283}00283 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00284}00284    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00285}\mbox{\hyperlink{namespacekblib_1_1fakestd_a9a5cfade6cc983f22b072f767fb12354}{00285}}    \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_l00286}00286 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00287}00287    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00288}\mbox{\hyperlink{namespacekblib_1_1fakestd_a0d19b1962ac16e513208678ca5fdeaf8}{00288}}    \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_l00289}00289 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00290}00290    \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp, \textcolor{keyword}{class} Up>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00291}\mbox{\hyperlink{namespacekblib_1_1fakestd_a211e13ec19d4dff8aa0be49de33d1f3d}{00291}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_a211e13ec19d4dff8aa0be49de33d1f3d}{is\_nothrow\_swappable\_with\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00292}00292        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{is\_nothrow\_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_ac3e868e4110d6024c05074addc73e324}{00295}}    \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_l00296}00296 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00297}00297 \textcolor{preprocessor}{\#  endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00298}00298 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00299}00299    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00300}00300       \textcolor{keyword}{template} <\textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00301}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{00301}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{not\_fn\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00302}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a2538de351c9638354f49fb814e4d4659}{00302}}          \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_l00303}00303              : fd(\mbox{\hyperlink{namespacestd}{std}}::forward<F>(f)) \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00304}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_aeab2e5affa8ba07ec100fe0f67c6980a}{00304}}          \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_l00305}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_abdcd9a6f77eaaa7fef387130c56d0a87}{00305}}          \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_l00306}00306 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00307}00307          \textcolor{keyword}{template} <\textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00308}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_ae78bc5d030af2e2b43a9f2bc14be54e2}{00308}}          \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_l00309}00309              not std::declval<invoke\_result\_t<std::decay\_t<F>\&, Args...>>()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00310}00310             \textcolor{keywordflow}{return} not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(fd, std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00311}00311          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00312}00312 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00313}00313          \textcolor{keyword}{template} <\textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00314}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a23a1b8b1fc87121196f8da49527ecba1}{00314}}          \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_l00315}00315              not std::declval<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00316}00316                  \mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{invoke\_result\_t<std::decay\_t<F>}} \textcolor{keyword}{const}\&, Args...>>()) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00317}00317             \textcolor{keywordflow}{return} not \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}}(std::move(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}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a0319fa1e1e859f2713d3e4d8004c4d0e}{00320}}          std::decay\_t<F> \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t_a0319fa1e1e859f2713d3e4d8004c4d0e}{fd}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00321}00321       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00322}00322    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00323}00323 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00324}00324    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00325}\mbox{\hyperlink{namespacekblib_1_1fakestd_a10b8e048c2aa3988eba70d354014a991}{00325}}    \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_l00326}00326       \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_l00327}00327    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00328}00328 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00329}\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{00329}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{in\_place\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00330}\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t_a09359eafc9bf49e6dc7b79ab0d9c10b8}{00330}}       \textcolor{keyword}{explicit} \mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t_a09359eafc9bf49e6dc7b79ab0d9c10b8}{in\_place\_t}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00331}00331    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00332}00332    \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_l00333}00333 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00334}00334    \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00335}\mbox{\hyperlink{namespacekblib_1_1fakestd_a02db9a7161f158d41173dfa1afd5441e}{00335}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{max\_element}}(ForwardIt first, ForwardIt last) -\/> ForwardIt \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00336}00336       \textcolor{keywordflow}{if} (first == last)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00337}00337          \textcolor{keywordflow}{return} last;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00338}00338 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00339}00339       ForwardIt largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00340}00340       ++first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00341}00341       \textcolor{keywordflow}{for} (; first != last; ++first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00342}00342          \textcolor{keywordflow}{if} (*largest < *first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00343}00343             largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00344}00344          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00345}00345       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00346}00346       \textcolor{keywordflow}{return} largest;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00347}00347    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00349}00349    \textcolor{keyword}{template} <\textcolor{keyword}{class} ForwardIt, \textcolor{keyword}{class} Compare>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00350}\mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{00350}}    \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_l00351}00351        -\/> ForwardIt \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00352}00352       \textcolor{keywordflow}{if} (first == last)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00353}00353          \textcolor{keywordflow}{return} last;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00354}00354 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00355}00355       ForwardIt largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00356}00356       ++first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00357}00357       \textcolor{keywordflow}{for} (; first != last; ++first) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00358}00358          \textcolor{keywordflow}{if} (comp(*largest, *first)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00359}00359             largest = first;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00360}00360          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00361}00361       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00362}00362       \textcolor{keywordflow}{return} largest;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00363}00363    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00364}00364 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00365}00365    \textcolor{keyword}{template} <\textcolor{keyword}{class} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00366}\mbox{\hyperlink{namespacekblib_1_1fakestd_adb8781bc0e5d1ba4ca4624293c0c98ae}{00366}}    \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_l00367}00367       \textcolor{keywordflow}{return} c.size();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00368}00368    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00369}00369 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00370}00370    \textcolor{keyword}{template} <\textcolor{keyword}{class} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00371}\mbox{\hyperlink{namespacekblib_1_1fakestd_a432682ee4f57ba5e6c16aea83751852c}{00371}}    \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_l00372}00372       \textcolor{keywordflow}{return} N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00373}00373    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00374}00374 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00375}00375    \textcolor{comment}{// Adapted from libstdc++ code, licensed under GPL}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00376}00376 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00377}00377    \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00378}00378       \textcolor{comment}{// invokable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00379}00379       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00380}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{00380}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{invokable\_r}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00381}00381          \textcolor{keyword}{template} <\textcolor{keyword}{class }XFp, \textcolor{keyword}{class}... XArgs>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00382}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a3b66cd7bd432f7db0b4ec65291e3046c}{00382}}          \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_l00383}00383              -\/> \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<XFp>(),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00384}00384                                        std::declval<XArgs>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00385}00385          \textcolor{keyword}{template} <\textcolor{keyword}{class }XFp, \textcolor{keyword}{class}... XArgs>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00386}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a48a55ae0d97a8b3329ef0d205410f82a}{00386}}          \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_l00387}00387 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00388}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_aef19fd92af3f760d46eec6db632ac4df}{00388}}          \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_l00389}00389 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00390}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_a1bb75c431ac0ca4e7c83294c02e0b839}{00390}}          \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_l00391}00391              not std::is\_same<Result, detail::nat>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00392}00392              \textcolor{keyword}{typename} std::conditional<std::is\_void<Ret>::value, std::true\_type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00393}00393                                        std::is\_convertible<Result, Ret>>::type,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00394}00394              std::false\_type>::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00395}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r_af024b4751f7bea9b13c3c52d1ad7f6af}{00395}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = type::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00396}00396       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00397}00397       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00398}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_aca747f62c5b3039ca3e183555c1e8299}{00398}}       \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_l00399}00399 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00400}00400       \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} IsInvokable, \textcolor{keywordtype}{bool} IsCVVoid, \textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00401}00401                 \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00402}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{00402}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r\_imp}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00403}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp_a86a46356f9f9a294cd8e8f553a199433}{00403}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00404}00404       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00405}00405 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00406}00406       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00407}\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}{00407}}       \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_l00408}\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}{00408}}          \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_l00409}00409 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00410}00410          \textcolor{keyword}{template} <\textcolor{keyword}{class} Tp>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00411}\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}{00411}}          \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_l00412}00412 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00413}\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}{00413}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(ThisT::test\_noexcept<Ret>(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00414}00414              \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<Fp>(), std::declval<Args>()...)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00415}00415       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00416}00416 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00417}00417       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00418}\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}{00418}}       \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_l00419}\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}{00419}}          \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{bool} value = \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00420}00420              \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::declval<Fp>(), std::declval<Args>()...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00421}00421       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00422}00422 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00423}00423       \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00424}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a3555ca296e45965f5f512404b99f7eec}{00424}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00425}00425           = \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_l00426}00426                                     std::is\_void<Ret>::value, Ret, Fp, Args...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00427}00427 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00428}00428       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00429}\mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a55d1649cdde1e2c0172f7b62e106fe40}{00429}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{nothrow\_invokable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00430}00430           = \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_l00431}00431                                     Fp, Args...>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00432}00432 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00433}00433       \textcolor{keyword}{template} <\textcolor{keyword}{class }Fp, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00434}\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__of}{00434}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__of}{invoke\_of}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00435}00435           : \textcolor{keyword}{public} std::enable\_if<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00436}00436                 invokable<Fp, Args...>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00437}00437                 typename invokable\_r<void, Fp, Args...>::Result> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00438}00438    \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00439}00439 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00440}00440    \textcolor{comment}{// is\_invocable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00441}00441 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00442}00442    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00443}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{00443}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{is\_invocable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00444}00444        : std::integral\_constant<bool, detail::invokable<Fn, Args...>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00445}00445 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00446}00446    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00447}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{00447}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{is\_invocable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00448}00448        : std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00449}00449                                 detail::invokable\_r<Ret, Fn, Args...>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00450}00450    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00451}00451 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00452}00452    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00453}\mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{00453}}    \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_l00454}00454 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00455}00455    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00456}\mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{00456}}    \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_l00457}00457 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00458}00458    \textcolor{comment}{// is\_nothrow\_invocable}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00459}00459 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00460}00460    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00461}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{00461}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00462}00462        : std::integral\_constant<bool,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00463}00463                                 detail::nothrow\_invokable<Fn, Args...>::value> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00464}00464    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00465}00465 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00466}00466    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00467}\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{00467}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{is\_nothrow\_invocable\_r}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00468}00468        : std::integral\_constant<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00469}00469              bool, detail::nothrow\_invokable\_r<Ret, Fn, Args...>::value> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00470}00470 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00471}00471    \textcolor{keyword}{template} <\textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00472}\mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{00472}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{is\_nothrow\_invocable\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00473}00473        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}<Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00474}00474 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00475}00475    \textcolor{keyword}{template} <\textcolor{keyword}{class }Ret, \textcolor{keyword}{class }Fn, \textcolor{keyword}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00476}\mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{00476}}    \textcolor{keyword}{constexpr} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{is\_nothrow\_invocable\_r\_v}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00477}00477        = \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{is\_nothrow\_invocable\_r}}<Ret, Fn, Args...>::value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00478}00478 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00479}00479 \} \textcolor{comment}{// namespace fakestd}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00480}00480 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00481}00481 \textcolor{keyword}{namespace }fakestd = \mbox{\hyperlink{namespacestd}{std}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00482}00482 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00483}00483 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00484}00484 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{fakestd::is\_invocable}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00485}00485 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{fakestd::is\_invocable\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00486}00486 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00487}00487 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{fakestd::is\_invocable\_r}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00488}00488 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{fakestd::is\_invocable\_r\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00489}00489 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00490}00490 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{fakestd::is\_nothrow\_invocable}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00491}00491 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{fakestd::is\_nothrow\_invocable\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00492}00492 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00493}00493 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{fakestd::is\_nothrow\_invocable\_r}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00494}00494 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{fakestd::is\_nothrow\_invocable\_r\_v}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00495}00495 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00496}00496 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00497}\mbox{\hyperlink{structkblib_1_1meta__type}{00497}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00498}00498 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00499}00499 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00500}\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4}{00500}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<T> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00501}\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4_ade1ca6c1fcb0cb4c59dce18d0ea45d1e}{00501}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4_ade1ca6c1fcb0cb4c59dce18d0ea45d1e}{type}} = T;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00502}00502 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00503}00503 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00504}00504 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00505}\mbox{\hyperlink{namespacekblib_af9d6c610a6e855aa1eba054060166247}{00505}} \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_l00506}00506 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00507}00507 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00508}\mbox{\hyperlink{structkblib_1_1void__if}{00508}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1void__if}{void\_if}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00509}00509 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00510}00510 \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00511}\mbox{\hyperlink{structkblib_1_1void__if_3_01true_01_4}{00511}} \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_l00512}00512 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} b>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00513}\mbox{\hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{00513}} \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_l00514}00514 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00515}00515 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{fakestd::void\_t}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00516}00516 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00517}00517 \textcolor{comment}{// metafunction\_success:}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00518}00518 \textcolor{comment}{// SFINAE detector for a ::type member type}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00519}00519 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00520}\mbox{\hyperlink{structkblib_1_1metafunction__success}{00520}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1metafunction__success}{metafunction\_success}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00522}00522 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00523}\mbox{\hyperlink{structkblib_1_1metafunction__success_3_01_t_00_01void__t_3_01typename_01_t_1_1type_01_4_01_4}{00523}} \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_l00524}00524 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00525}00525 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00526}\mbox{\hyperlink{structkblib_1_1is__callable}{00526}} \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_l00527}00527 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00528}00528 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00529}\mbox{\hyperlink{namespacekblib_a5d358e0474506e99331fde45ce81f78f}{00529}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a5d358e0474506e99331fde45ce81f78f}{metafunction\_value\_t}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00530}00530     = std::integral\_constant<\textcolor{keyword}{decltype}(T::value), T::value>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00531}00531 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00536}00536 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} V, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00537}\mbox{\hyperlink{structkblib_1_1return__assert}{00537}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1return__assert}{return\_assert}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00538}00538 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00539}00539 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00540}\mbox{\hyperlink{structkblib_1_1return__assert_3_01true_00_01_t_01_4}{00540}} \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_l00541}00541 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00542}00542 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} V, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00543}\mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{00543}} \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_l00544}00544 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00545}00545 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00546}00546 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00547}00547    \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Arg, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00548}\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{00548}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{apply\_impl}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00549}00549       \textcolor{keyword}{template} <std::size\_t... Is>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00550}\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl_a08646f101e0e5b0df8b2310eab9a9388}{00550}}       \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_l00551}00551           \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00552}00552                                  std::get<Is>(std::forward<Arg>(arg))...)))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00553}00553           -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00554}00554          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(std::forward<F>(f),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00555}00555                               std::get<Is>(std::forward<Arg>(arg))...);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00556}00556       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00557}00557    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00558}00558 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00559}00559 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00560}00560 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00561}00561 \textcolor{keyword}{template} <\textcolor{keyword}{typename} F, \textcolor{keyword}{typename} Arg>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00562}\mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{00562}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{apply}}(F\&\& f, Arg\&\& arg) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00563}00563     \textcolor{keyword}{noexcept}(\mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{detail::apply\_impl<F, Arg>::do\_apply}}(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00564}00564         std::forward<F>(f), std::forward<Arg>(arg),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00565}00565         std::index\_sequence<std::tuple\_size<Arg>::value>\{\})))}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00566}00566     -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00567}00567    \textcolor{keywordflow}{return} detail::apply\_impl<F, Arg>::do\_apply(}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00568}00568        std::forward<F>(f), std::forward<Arg>(arg),}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00569}00569        std::index\_sequence<std::tuple\_size<Arg>::value>\{\});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00570}00570 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00571}00571 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00572}00572 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00573}\mbox{\hyperlink{namespacekblib_ae8b1b4dad48864760dd5c1ba368c06c9}{00573}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_acf70692a40d94aa8df04ea37d05c7a64}{to\_unique}}(gsl::owner<T*> p) -\/> std::unique\_ptr<T> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00574}00574    \textcolor{keywordflow}{return} std::unique\_ptr<T>(p);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00575}00575 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00576}00576 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00577}\mbox{\hyperlink{namespacekblib_acf70692a40d94aa8df04ea37d05c7a64}{00577}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_acf70692a40d94aa8df04ea37d05c7a64}{to\_unique}}(gsl::owner<T*> p, D\&\& d)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00578}00578     -\/> std::unique\_ptr<T, D> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00579}00579    \textcolor{keywordflow}{return} std::unique\_ptr<T, D>(p, d);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00580}00580 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00581}00581 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00585}00585 \textcolor{keyword}{template} <\textcolor{keyword}{typename} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00586}\mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{00586}} \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_l00587}00587    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::make\_unsigned\_t<I>\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00588}00588 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00592}00592 \textcolor{keyword}{template} <\textcolor{keyword}{typename} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00593}\mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{00593}} \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_l00594}00594    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::make\_signed\_t<I>\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00595}00595 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00596}00596 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00601}00601 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00602}\mbox{\hyperlink{namespacekblib_accb66942cbfbca80c254045501c96cc9}{00602}} \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_l00603}00603     -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_integral<A>::value}} and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00604}00604                        and std::is\_signed<A>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00605}00605                    std::make\_signed\_t<F>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00606}00606    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{to\_signed}}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00607}00607 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00608}00608 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00613}00613 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00614}00614 \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_l00615}00615     -\/> enable\_if\_t<std::is\_integral<A>::value and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00616}00616                        and std::is\_unsigned<A>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00617}00617                    std::make\_unsigned\_t<F>> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00618}00618    \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00619}00619 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00620}00620 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00621}00621 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00622}\mbox{\hyperlink{structkblib_1_1has__member__swap}{00622}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1has__member__swap}{has\_member\_swap}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00623}00623  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00624}00624    \textcolor{keyword}{using }yes = char (\&)[1];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00625}00625    \textcolor{keyword}{using }no = char (\&)[2];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00627}00627    \textcolor{keyword}{template} <\textcolor{keyword}{typename} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00628}00628    \textcolor{keyword}{static} \textcolor{keyword}{auto} check(\textcolor{keyword}{decltype}(\&\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{C::swap}})) -\/> yes;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00629}00629    \textcolor{keyword}{template} <\textcolor{keyword}{typename}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00630}00630    \textcolor{keyword}{static} \textcolor{keyword}{auto} check(...) -\/> no;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00631}00631 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00632}00632  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00633}\mbox{\hyperlink{structkblib_1_1has__member__swap_a193b61a4ec9d0debb1b852bb4ae5d502}{00633}}    \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_l00634}00634 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00635}00635 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00636}00636 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00637}\mbox{\hyperlink{structkblib_1_1is__tuple__like}{00637}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1is__tuple__like}{is\_tuple\_like}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00638}00638 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00639}00639 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00640}\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}{00640}} \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_l00641}00641     : std::true\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00642}00642 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00643}00643 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00645}00645    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00646}\mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{00646}}    \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_l00647}00647 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00648}00648    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::size\_t... Is>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00649}00649    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00650}\mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{00650}}    \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_l00651}00651        \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_l00652}00652        -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00653}00653       \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_l00654}00654    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00655}00655 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00656}00656 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00657}00657 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00658}00658 \mbox{\hyperlink{tdecl_8h_a607cffc585fe3bfcb06b63be2948de4a}{KBLIB\_UNUSED}} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00664}00664    template <typename T, enable\_if\_t<not has\_member\_swap<T>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00665}00665                                          and not is\_tuple\_like<T>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00666}00666                                      \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00667}00667    \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_l00668}00668        \textcolor{keyword}{noexcept}(std::is\_nothrow\_move\_constructible<T>::value and}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00669}00669                     std::is\_nothrow\_move\_assignable<T>::value) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00670}00670       \textcolor{keyword}{auto} tmp = std::move(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00671}00671       \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} = std::move(b);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00672}00672       b = std::move(tmp);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00673}00673       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00674}00674    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00675}00675 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00681}00681    template <typename T, enable\_if\_t<has\_member\_swap<T>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00682}00682    \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_l00683}00683        \textcolor{keyword}{noexcept}(\textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.swap(b))) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00684}00684       \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.swap(b);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00685}00685       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00686}00686    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00687}00687 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00693}00693    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00694}00694    \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_l00695}00695        \textcolor{keyword}{noexcept}(std::is\_nothrow\_move\_constructible<T>::value and}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00696}00696                     std::is\_nothrow\_move\_assignable<T>::value) -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00697}00697       \textcolor{keywordflow}{for} (std::size\_t i = 0; i < N; ++i) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00698}00698          \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}[i], b[i]);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00699}00699       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00700}00700    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00701}00701 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00707}00707    template <typename T, enable\_if\_t<is\_tuple\_like<T>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00708}00708                                          and not has\_member\_swap<T>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00709}00709                                      std::size\_t>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00710}00710                              N}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00711}00711                          = std::tuple\_size<T>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00712}00712    \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_l00713}00713        \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_l00714}00714       \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_l00715}00715    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00716}\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{00716}} \} \mbox{\hyperlink{tdecl_8h_a35b356d58929dd3ae764e8291838f5be}{KBLIB\_CONSTANT}} \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00717}00717 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00718}00718 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} U = T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00719}\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{00719}} \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_l00720}00720    T old\_value = std::move(obj);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00721}00721    obj = std::forward<U>(new\_value);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00722}00722    \textcolor{keywordflow}{return} old\_value;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00723}00723 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00724}00724 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00725}00725 \textcolor{preprocessor}{\#if KBLIB\_USE\_CXX17}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00726}00726 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00727}00727 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00728}00728 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00729}00729    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00730}\mbox{\hyperlink{namespacekblib_1_1detail_ac83b1d792994abd35a99b63c8732c2a7}{00730}}    \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_l00731}00731 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00732}\mbox{\hyperlink{namespacekblib_1_1detail_add427a975267711b7a1a94fc13aab8b4}{00732}}    \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_l00733}00733       x |= (x >> 1u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00734}00734       x |= (x >> 2u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00735}00735       x |= (x >> 4u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00736}00736       x |= (x >> 8u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00737}00737       x |= (x >> 16u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00738}00738       x |= (x >> 32u);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00739}00739       \textcolor{keywordflow}{return} (x \& \string~(x >> 1u));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00740}00740    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00741}00741 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00742}00742    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Num>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00743}\mbox{\hyperlink{namespacekblib_1_1detail_a7862ff8e4fb97f3ad170829296360714}{00743}}    \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_l00744}00744       \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}Num\textcolor{keyword}{>}(\textcolor{keyword}{typename} std::make\_unsigned<Num>::type\{1\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00745}00745                               << (std::numeric\_limits<Num>::digits -\/ 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}{class}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00749}\mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{00749}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{type\_list}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00750}00750       \textcolor{keyword}{template} <std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00751}\mbox{\hyperlink{structkblib_1_1detail_1_1type__list_af9b78de50475d1f25d3c17ef9ed40158}{00751}}       \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_l00752}00752    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00753}00753 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00754}00754    \textcolor{keyword}{template} <auto K, \textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00755}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{00755}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{type\_map\_el}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00756}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_aa7752e8a6852571de51efbaead5e2815}{00756}}       \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} key = K;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00757}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_a9cc3a148b50fd187c327cc3822723e9f}{00757}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el_a9cc3a148b50fd187c327cc3822723e9f}{value}} = V;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00758}00758    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00759}00759 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00760}00760    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Key, \textcolor{keyword}{typename} Comp, \textcolor{keyword}{typename}... Vals>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00761}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{00761}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{type\_map}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00762}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ac46a6c0218d447a7daeb03500701d98f}{00762}}       \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_l00763}00763       \textcolor{keyword}{template} <std::\textcolor{keywordtype}{size\_t} I>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00764}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_ad39a036eb477e8fe86aa404be194c5e0}{00764}}       \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_l00765}00765 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00766}00766       \textcolor{keyword}{template} <Key key, std::\textcolor{keywordtype}{size\_t} I = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00767}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a7866fc83674297e0b4e389b240bc3d9d}{00767}}       \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_l00768}00768          \textcolor{keyword}{static\_assert}(I < \textcolor{keyword}{sizeof}...(Vals), \textcolor{stringliteral}{"{}key not found"{}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00769}00769          \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_l00770}00770             \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1detail_1_1tag}{tag<typename element<I>::value}}>\{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00771}00771          \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00772}00772             \textcolor{keywordflow}{return} get<key, I + 1>();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00773}00773          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00774}00774       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00775}00775 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00776}00776       \textcolor{keyword}{template} <Key key, \textcolor{keyword}{typename} Default = \textcolor{keywordtype}{void}, std::\textcolor{keywordtype}{size\_t} I = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00777}\mbox{\hyperlink{structkblib_1_1detail_1_1type__map_a5ce80e6f4604a13bc7ad117410b4e567}{00777}}       \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_l00778}00778          \textcolor{keywordflow}{if} \textcolor{keyword}{constexpr} (I == \textcolor{keyword}{sizeof}...(Vals)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00779}00779             \textcolor{keywordflow}{return} Default();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00780}00780          \} \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_l00781}00781             \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1detail_1_1tag}{tag<typename element<I>::value}}>\{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00782}00782          \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00783}00783             \textcolor{keywordflow}{return} get<key, I + 1>();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00784}00784          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00785}00785       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00786}00786    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00787}00787 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00788}00788    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00789}\mbox{\hyperlink{namespacekblib_1_1detail_aa78d53d4378e2b944726396fd2ea2cbc}{00789}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{make\_smap\_el}}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00790}00790        = \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_l00791}00791 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00792}00792    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00793}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{00793}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{next\_larger\_signed}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00794}00794       \textcolor{keyword}{static\_assert}(max\_val<T> < max\_val<std::intmax\_t>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00795}00795                     \textcolor{stringliteral}{"{}Cannot safely promote intmax\_t."{}});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00796}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare}{00796}}       \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare}{false\_compare}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00797}00797          \textcolor{keyword}{template} <\textcolor{keyword}{typename} U>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00798}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare_a579b2f66a05f77c375c10b16b2c76bad}{00798}}          \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_l00799}00799             \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00800}00800          \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00801}00801       \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00802}00802 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00803}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_ae123b508ad182e3fc2df972431818cda}{00803}}       \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_l00804}00804           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_l00805}00805           \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_l00806}00806           \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_l00807}00807 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00808}\mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_aeca02a2e87733928ddb3194131408270}{00808}}       \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_l00809}00809           ints\_map::template get\_default<max\_val<T> + 1>())::type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00810}00810    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00811}00811 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00812}00812    template <typename N, bool = std::is\_signed<N>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00813}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{00813}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{filter\_signed}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00814}00814 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00815}00815    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00816}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4}{00816}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed}{filter\_signed}}<N, true> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00817}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4_a12d6af71c2dfa80bca6ca5556896dd33}{00817}}       \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_l00818}00818    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00819}00819 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00820}00820    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00821}\mbox{\hyperlink{namespacekblib_1_1detail_a81503c6f3c66c26bcacc9a672cdc1679}{00821}}    \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_l00822}00822 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00823}00823    template <typename N, bool = std::is\_unsigned<N>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00824}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{00824}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{filter\_unsigned}};}
\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{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4}{00827}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned}{filter\_unsigned}}<N, true> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00828}\mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4_a370236ef5a93fc840717b9322fdebf3f}{00828}}       \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_l00829}00829    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00830}00830 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00831}00831    \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00832}\mbox{\hyperlink{namespacekblib_1_1detail_a1d5a56a57c2822f86888933c0fac7164}{00832}}    \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_l00833}00833 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00834}00834 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00835}00835 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00836}00836 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00837}\mbox{\hyperlink{structkblib_1_1safe__signed}{00837}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1safe__signed}{safe\_signed}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00838}00838 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00839}00839 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00840}\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}{00840}} \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_l00841}\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}{00841}}    \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_l00842}00842        std::is\_signed<N>::value, N,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00843}00843        \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_l00844}00844 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00845}00845 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00846}00846 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00847}\mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{00847}} \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_l00848}00848 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00849}00849 \textcolor{keyword}{template} <\textcolor{keyword}{typename} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00850}\mbox{\hyperlink{namespacekblib_ae842572db70fc0a71d6ea2c2c33f3eff}{00850}} \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_l00851}00851     -\/> \mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{safe\_signed\_t<N>}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00852}00852    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{safe\_signed\_t<N>}}\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00853}00853 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00854}00854 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00855}00855 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00856}00856 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00857}00857 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00858}00858           \textcolor{keywordtype}{bool} = std::is\_const<typename std::remove\_reference<C>::type>::value>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00859}\mbox{\hyperlink{structkblib_1_1copy__const}{00859}} \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_l00860}00860 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00861}00861 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00862}\mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_00_01true_01_4}{00862}} \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_l00863}00863 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00864}00864 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00865}\mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_01_6_00_01true_01_4}{00865}} \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_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_01_6_6_00_01true_01_4}{00868}} \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_l00869}00869 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00870}00870 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C, \textcolor{keyword}{typename} V>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00871}\mbox{\hyperlink{namespacekblib_af973fdd9c2dddf6db3744ae83902fc72}{00871}} \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_l00872}00872 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00873}00873 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00874}\mbox{\hyperlink{structkblib_1_1value__detected}{00874}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__detected}{value\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00875}00875 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00876}00876 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00877}\mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4}{00877}} \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_l00878}\mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4_a2f16a90dde6aa2d443b757c4d8585229}{00878}}    \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_l00879}00879 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00880}00880 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00881}00881 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00882}\mbox{\hyperlink{namespacekblib_a927171c113d5559da2f0f2245ed5e9da}{00882}} \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_l00883}00883 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00884}\mbox{\hyperlink{namespacekblib_aa0f56c295f64726c092c84a77f025a85}{00884}} \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_l00885}00885 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00886}00886 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00887}\mbox{\hyperlink{structkblib_1_1key__detected}{00887}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__detected}{key\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00888}00888 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00889}00889 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00890}\mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4}{00890}} \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_l00891}\mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4_af03ad777cfe8638ba072a670a97114d8}{00891}}    \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_l00892}00892 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00893}00893 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00894}00894 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00895}\mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{00895}} \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_l00896}00896 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00897}\mbox{\hyperlink{namespacekblib_ac84fd1f7586e640147679a7c24a746d8}{00897}} \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_l00898}00898 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00899}00899 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00900}\mbox{\hyperlink{structkblib_1_1mapped__detected}{00900}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1mapped__detected}{mapped\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00901}00901 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00902}00902 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00903}\mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4}{00903}} \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_l00904}\mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4_aa9584b91eef793c467ae6ad931d4879c}{00904}}    \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_l00905}00905 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00906}00906 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00907}00907 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00908}\mbox{\hyperlink{namespacekblib_a13ab67cd7841362d9e8da411066ca974}{00908}} \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_l00909}00909 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00910}\mbox{\hyperlink{namespacekblib_aea08f7e56313388f4681f002a13793ba}{00910}} \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_l00911}00911 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00912}00912 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00913}\mbox{\hyperlink{structkblib_1_1hash__detected}{00913}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1hash__detected}{hash\_detected}} : std::false\_type \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00914}00914 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00915}00915 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00916}\mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4}{00916}} \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_l00917}\mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4_aebffeb8d48976dcddb56d2299a9ba638}{00917}}    \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_l00918}00918 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00919}00919 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00920}00920 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00921}\mbox{\hyperlink{namespacekblib_adbb2b4e744a5f165142f9a49cf5fa8b4}{00921}} \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_l00922}00922 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00923}\mbox{\hyperlink{namespacekblib_a73fd7f69e7f6233d2c480a16e86b03a0}{00923}} \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_l00924}00924 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00925}00925 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keywordtype}{bool} = key\_detected\_v<Container>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00926}00926           \textcolor{keyword}{typename} T = \textcolor{keyword}{typename} Container::value\_type>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00927}\mbox{\hyperlink{structkblib_1_1value__type__linear}{00927}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__type__linear}{value\_type\_linear}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00928}00928 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00929}00929 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00930}\mbox{\hyperlink{structkblib_1_1value__type__linear_3_01_container_00_01false_00_01typename_01_container_1_1value__type_01_4}{00930}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1value__type__linear}{value\_type\_linear}}<Container, false, typename Container::value\_type>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00931}00931     : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<typename Container::value\_type> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00932}00932 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00933}00933 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00934}\mbox{\hyperlink{namespacekblib_ac04bc7261d579d570a3847df654bc209}{00934}} \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_l00935}00935 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00936}00936 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00937}00937 \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} is\_linear\_container\_v}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00938}00938     = value\_detected\_v<Container> and not key\_detected\_v<Container>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00939}00939 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00940}00940 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00941}\mbox{\hyperlink{structkblib_1_1is__linear__container}{00941}} \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_l00942}00942 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00943}00943 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container, \textcolor{keywordtype}{bool} = key\_detected\_v<Container>,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00944}00944           \textcolor{keywordtype}{bool} = mapped\_detected\_v<Container>>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00945}\mbox{\hyperlink{structkblib_1_1key__type__setlike}{00945}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__type__setlike}{key\_type\_setlike}} \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00946}00946 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00947}00947 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00948}\mbox{\hyperlink{structkblib_1_1key__type__setlike_3_01_container_00_01true_00_01false_01_4}{00948}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1key__type__setlike}{key\_type\_setlike}}<Container, true, false>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00949}00949     : \mbox{\hyperlink{structkblib_1_1meta__type}{meta\_type}}<typename Container::key\_type> \{\};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00950}00950 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00951}00951 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00952}\mbox{\hyperlink{namespacekblib_a08c333aaa30dec55fb9d3e7d616093bd}{00952}} \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_l00953}00953 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00954}00954 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Container>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00955}00955 \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} is\_setlike\_v}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00956}00956     = (\mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{key\_detected\_v}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00957}00957            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_l00958}00958 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00959}00959 \textcolor{keyword}{template} <\textcolor{keyword}{class} InputIt1, \textcolor{keyword}{class} InputIt2>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00960}\mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{00960}} \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_l00961}00961                                      InputIt2 first2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00962}00962    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00963}00963       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00964}00964          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00965}00965       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00966}00966    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00967}00967    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00968}00968 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00969}00969 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00970}00970 \textcolor{keyword}{template} <\textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00971}00971           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00972}00972               not std::is\_same<InputIt2, BinaryPredicate>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00973}\mbox{\hyperlink{namespacekblib_a4b33292eab2082159622b9c062b665c0}{00973}} \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_l00974}00974                                      InputIt2 first2, BinaryPredicate p)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00975}00975     -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00976}00976    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00977}00977       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00978}00978          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00979}00979       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00980}00980    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00981}00981    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00982}00982 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00983}00983 \textcolor{keyword}{template} <\textcolor{keyword}{class }RandomIt1, \textcolor{keyword}{class }RandomIt2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00984}00984           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00985}00985               std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00986}00986                               \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00987}00987                                   RandomIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00988}00988                   and std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00989}00989                                       \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00990}00990                                           RandomIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00991}00991               \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00992}\mbox{\hyperlink{namespacekblib_aa5cefb6480de50ffafc875fedc55538a}{00992}} \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_l00993}00993                                      RandomIt2 first2, RandomIt2 last2)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00994}00994     -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00995}00995    \textcolor{keywordflow}{if} (std::distance(first1, last1) == std::distance(first2, last2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00996}00996       \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00997}00997    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00998}00998    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l00999}00999       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01000}01000          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01001}01001       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01002}01002    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01003}01003    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01004}01004 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01005}01005 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01006}01006 \textcolor{keyword}{template} <\textcolor{keyword}{class }RandomIt1, \textcolor{keyword}{class }RandomIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01007}01007           \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01008}01008               std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01009}01009                               \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01010}01010                                   RandomIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01011}01011                   and std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01012}01012                                       \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01013}01013                                           RandomIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01014}01014               \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01015}\mbox{\hyperlink{namespacekblib_a391794b2905afd47e4ba541643472d33}{01015}} \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_l01016}01016                                      RandomIt2 first2, RandomIt2 last2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01017}01017                                      BinaryPredicate p) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01018}01018    \textcolor{keywordflow}{if} (std::distance(first1, last1) == std::distance(first2, last2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01019}01019       \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01020}01020    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01021}01021    \textcolor{keywordflow}{for} (; first1 != last1; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01022}01022       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01023}01023          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01024}01024       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01025}01025    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01026}01026    \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01027}01027 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01028}01028 \textcolor{keyword}{template} <}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01029}01029     \textcolor{keyword}{class }InputIt1, \textcolor{keyword}{class }InputIt2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01030}01030     \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01031}01031         not std::is\_base\_of<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01032}01032             std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01033}01033             \textcolor{keyword}{typename} std::iterator\_traits<InputIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01034}01034             or not std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01035}01035                                    \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01036}01036                                        InputIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01037}01037         \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01038}\mbox{\hyperlink{namespacekblib_a131eb5b6f49dfb59ab977a066d1869e7}{01038}} \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_l01039}01039                                      InputIt2 first2, InputIt2 last2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01040}01040    \textcolor{keywordflow}{for} (; first1 != last1 and first2 != last2; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01041}01041       \textcolor{keywordflow}{if} (not (*first1 == *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01042}01042          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01043}01043       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01044}01044    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01045}01045    \textcolor{keywordflow}{return} (first1 == last1 and first2 == last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01046}01046 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01047}01047 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01048}01048 \textcolor{keyword}{template} <}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01049}01049     \textcolor{keyword}{typename} InputIt1, \textcolor{keyword}{typename} InputIt2, \textcolor{keyword}{typename} BinaryPredicate,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01050}01050     \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01051}01051         not std::is\_base\_of<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01052}01052             std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01053}01053             \textcolor{keyword}{typename} std::iterator\_traits<InputIt1>::iterator\_category>::value}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01054}01054             or not std::is\_base\_of<std::random\_access\_iterator\_tag,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01055}01055                                    \textcolor{keyword}{typename} std::iterator\_traits<}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01056}01056                                        InputIt2>::iterator\_category>::value,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01057}01057         \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01058}\mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{01058}} \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_l01059}01059                                      InputIt2 first2, InputIt2 last2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01060}01060                                      BinaryPredicate p) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01061}01061    \textcolor{keywordflow}{for} (; first1 != last1 and first2 != last2; ++first1, ++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01062}01062       \textcolor{keywordflow}{if} (not p(*first1, *first2)) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01063}01063          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01064}01064       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01065}01065    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01066}01066    \textcolor{keywordflow}{return} (first1 == last1 and first2 == last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01067}01067 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01068}01068 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01069}01069 \textcolor{keyword}{template} <\textcolor{keyword}{typename} C>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01070}\mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{01070}} \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_l01071}01071    \textcolor{keywordflow}{return} c.size();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01072}01072 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01073}01073 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01074}01074 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01075}\mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{01075}} \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_l01076}01076    \textcolor{keywordflow}{return} N;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01077}01077 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01078}01078 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01079}01079 \textcolor{keyword}{template} <\textcolor{keyword}{class} InputIt1, \textcolor{keyword}{class} InputIt2>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01080}\mbox{\hyperlink{namespacekblib_aec67bf14d264f3587e3b86645af62d2a}{01080}} \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_l01081}01081                                                        InputIt1 last1,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01082}01082                                                        InputIt2 first2,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01083}01083                                                        InputIt2 last2) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01084}01084    \textcolor{keywordflow}{for} (; (first1 != last1) and (first2 != last2); ++first1, (void)++first2) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01085}01085       \textcolor{keywordflow}{if} (*first1 < *first2)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01086}01086          \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01087}01087       \textcolor{keywordflow}{if} (*first2 < *first1)}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01088}01088          \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01089}01089    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01090}01090    \textcolor{keywordflow}{return} (first1 == last1) and (first2 != last2);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01091}01091 \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01092}01092 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01093}01093 \textcolor{keyword}{namespace }detail \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01094}01094    \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01095}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{01095}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{pointer}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01096}\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_a9fbf572b4e3d04390dbe158d5ff71fd6}{01096}}       \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail_1_1pointer_a9fbf572b4e3d04390dbe158d5ff71fd6}{type}} = T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01097}01097    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01098}01098 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01099}01099    \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01100}\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}{01100}}    \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_l01101}\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}{01101}}       \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_l01102}01102    \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01103}01103 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01104}01104 \} \textcolor{comment}{// namespace detail}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01105}01105 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01106}\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{01106}} \textcolor{keyword}{constexpr} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{in\_place\_agg\_t}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01107}\mbox{\hyperlink{namespacekblib_af44abb883b069d84630176b4b8cd26f6}{01107}} \} \mbox{\hyperlink{namespacekblib_af44abb883b069d84630176b4b8cd26f6}{in\_place\_agg}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01108}01108 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01109}01109 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01110}\mbox{\hyperlink{classkblib_1_1heap__value}{01110}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01111}01111  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01112}\mbox{\hyperlink{classkblib_1_1heap__value_a31771fe307c302f90d3ac2298cc7f92a}{01112}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_a31771fe307c302f90d3ac2298cc7f92a}{element\_type}} = T;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01113}\mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{01113}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_afd42db4d63582d9b106c761768c47402}{pointer}} = T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01114}\mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{01114}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_a047d8612086a0043e96523dff51e246e}{const\_pointer}} = \textcolor{keyword}{const} T*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01115}\mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{01115}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_ac8b6348863b9b573463f6ef20810096c}{reference}} = T\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01116}\mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{01116}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value_ac15f37a371c32ccac110ad8e3a359fff}{const\_reference}} = \textcolor{keyword}{const} T\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01117}01117 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01118}\mbox{\hyperlink{classkblib_1_1heap__value_a3d43ebc6e7df6ceaeeb9458d9c2dc89c}{01118}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1heap__value_a3d43ebc6e7df6ceaeeb9458d9c2dc89c}{heap\_value}}() noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01119}01119        : p\{\textcolor{keyword}{nullptr}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01120}\mbox{\hyperlink{classkblib_1_1heap__value_a8ca0b4fe8932901dc385cc7882e26eeb}{01120}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1heap__value_a8ca0b4fe8932901dc385cc7882e26eeb}{heap\_value}}(std::nullptr\_t) noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01121}01121        : p\{\textcolor{keyword}{nullptr}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01122}01122 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01123}01123    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01124}01124              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<std::is\_constructible<T, Args...>::value> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01125}\mbox{\hyperlink{classkblib_1_1heap__value_acdda17b531e2170ef3927472d98ac12b}{01125}}    \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_l01126}01126        : p\{new T(args...)\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01127}01127    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01128}\mbox{\hyperlink{classkblib_1_1heap__value_ac3c4a9f23acb5d0cc45eb9a6dc959f02}{01128}}    \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_l01129}01129        : p\{new T\{args...\}\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01130}01130 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01131}\mbox{\hyperlink{classkblib_1_1heap__value_ac3df0b831c9da1cb73b1e38bcc36dab2}{01131}}    \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_l01132}01132        : p\{(u.p ? (new T(*u.p)) : nullptr)\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01133}\mbox{\hyperlink{classkblib_1_1heap__value_a13ca53ac109cd8b11315215e639fe56c}{01133}}    \mbox{\hyperlink{classkblib_1_1heap__value_a13ca53ac109cd8b11315215e639fe56c}{heap\_value}}(\mbox{\hyperlink{classkblib_1_1heap__value}{heap\_value}}\&\& u) noexcept}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01134}01134        : p\{\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(u.p, \textcolor{keyword}{nullptr})\} \{\}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01135}01135 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01136}\mbox{\hyperlink{classkblib_1_1heap__value_ae6f3c413dc51d599b41a68f98205744a}{01136}}    \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_l01137}01137       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01138}01138          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01139}01139       \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (not u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01140}01140          p.\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01141}01141       \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (p) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01142}01142          *p = *u;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01143}01143       \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01144}01144          p.reset(\textcolor{keyword}{new} T(*u.p));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01145}01145       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01146}01146       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01147}01147    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01148}01148 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01149}\mbox{\hyperlink{classkblib_1_1heap__value_a63d7ae9dab3ce5527fe73e17e2b6deb5}{01149}}    \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_l01150}01150       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&u) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01151}01151          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01152}01152       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01153}01153       p = \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(u.p, \textcolor{keyword}{nullptr});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01154}01154       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01155}01155    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01156}01156 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01157}\mbox{\hyperlink{classkblib_1_1heap__value_a3572a0bb551ebb1db3d8aa398700fa77}{01157}}    \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_l01158}01158       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&val) \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01159}01159          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01160}01160       \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01161}01161       p.\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}(\textcolor{keyword}{new} T(val));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01162}01162    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01163}\mbox{\hyperlink{classkblib_1_1heap__value_a5e674185015a5fa6baa874be8c19bbe2}{01163}}    \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_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(std::move(val)));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01168}01168    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01169}01169 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01170}\mbox{\hyperlink{classkblib_1_1heap__value_a57a2c49a83b15e8d448e1c3e443a02cf}{01170}}    \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_l01171}\mbox{\hyperlink{classkblib_1_1heap__value_a91d43de8663d750301ba482db20fd3f3}{01171}}    \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_l01172}\mbox{\hyperlink{classkblib_1_1heap__value_a5e8a0d229f6993a66e938149ec1c678c}{01172}}    \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_l01173}01173    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01174}01174              \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<std::is\_constructible<T, Args...>::value> = 0>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01175}\mbox{\hyperlink{classkblib_1_1heap__value_a484748dc55235a3d97bc60c8965b11e2}{01175}}    \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_l01176}01176       p.reset(\textcolor{keyword}{new} T(std::forward<Args>(args)...));}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01177}01177    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01178}01178    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01179}\mbox{\hyperlink{classkblib_1_1heap__value_a32c2e2caadb585b6d2f2bc70e41d8be2}{01179}}    \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_l01180}01180       p.reset(\textcolor{keyword}{new} T\{std::forward<Args>(args)...\});}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01181}01181    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01182}01182 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01183}\mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{01183}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1heap__value_a33574856d71320735f0fdf415a5a0217}{reset}}() noexcept -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01184}01184       p.reset();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01185}01185       \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01186}01186    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01187}01187 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01188}\mbox{\hyperlink{classkblib_1_1heap__value_a97a382742abd905335e8391ec6b3c70b}{01188}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const\& noexcept \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01189}01189       \textcolor{keywordflow}{return} p != \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01190}01190    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01191}01191 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01192}\mbox{\hyperlink{classkblib_1_1heap__value_a624e5536509335d942dbe30d198761a6}{01192}}    \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_l01193}01193       \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{kblib::swap}}(p, other.p);}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01194}01194    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01195}01195 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01196}\mbox{\hyperlink{classkblib_1_1heap__value_ac6f98460cea64400bb4df2cdbd00e29b}{01196}}    \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_l01197}\mbox{\hyperlink{classkblib_1_1heap__value_a3a31864783f1742975235d0444e4b03e}{01197}}    \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_l01198}01198       \textcolor{keywordflow}{return} p.get();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01199}01199    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01200}01200 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01201}\mbox{\hyperlink{classkblib_1_1heap__value_a55ea38fca8c4cfb3a3be0da2a64d219e}{01201}}    \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_l01202}\mbox{\hyperlink{classkblib_1_1heap__value_a2a3fe3d47608438d94e7695fae91deb2}{01202}}    \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_l01203}01203       \textcolor{keywordflow}{return} *p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01204}01204    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01205}\mbox{\hyperlink{classkblib_1_1heap__value_a66cfd518de775b8c13fe95b1863fbd87}{01205}}    \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_l01206}\mbox{\hyperlink{classkblib_1_1heap__value_abd5be604caacda229c5d1e3643180e10}{01206}}    \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_l01207}01207 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01208}\mbox{\hyperlink{classkblib_1_1heap__value_a68762e9f23a9f2021a2b467a672142b9}{01208}}    \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_l01209}\mbox{\hyperlink{classkblib_1_1heap__value_a6ad73b0366093ce1e42a02ad3d0271d4}{01209}}    \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_l01210}01210       \textcolor{keywordflow}{return} *p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01211}01211    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01212}\mbox{\hyperlink{classkblib_1_1heap__value_ac722d1c6f94e89b19e46422899b7c372}{01212}}    \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_l01213}\mbox{\hyperlink{classkblib_1_1heap__value_a726e201d6c7a36975c590878941b1e86}{01213}}    \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_l01214}01214 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01215}\mbox{\hyperlink{classkblib_1_1heap__value_aae02160de65bf17a56d3bc087a43e934}{01215}}    \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_l01216}\mbox{\hyperlink{classkblib_1_1heap__value_a91853fc3048bfc19cc164fd2b7697397}{01216}}    \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_l01217}01217       \textcolor{keywordflow}{return} p.get();}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01218}01218    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01219}01219 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01220}\mbox{\hyperlink{classkblib_1_1heap__value_ac493c77a56367f2e07b1726de82eff2c}{01220}}    \mbox{\hyperlink{classkblib_1_1heap__value_ac493c77a56367f2e07b1726de82eff2c}{\string~heap\_value}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01221}01221 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01222}01222  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01223}01223    std::unique\_ptr<element\_type> p;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01224}01224 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01225}01225 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01226}01226 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01227}\mbox{\hyperlink{classkblib_1_1heap__value2}{01227}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1heap__value2}{heap\_value2}} : \textcolor{keyword}{private} std::unique\_ptr<T, D> \{}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01228}01228    \textcolor{keyword}{using }Base = std::unique\_ptr<T, D>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01229}01229 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01230}01230  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01231}01231    \textcolor{keyword}{using }typename Base::deleter\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01232}01232    \textcolor{keyword}{using }typename Base::element\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01233}01233    \textcolor{keyword}{using }typename Base::pointer;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01234}\mbox{\hyperlink{classkblib_1_1heap__value2_af1f37c8f41197973e1164c3d4a056229}{01234}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_af1f37c8f41197973e1164c3d4a056229}{reference}} = \textcolor{keyword}{decltype}(*std::declval<pointer>());}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01235}\mbox{\hyperlink{classkblib_1_1heap__value2_afb832b0199ac380e2a1a658578375ca6}{01235}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1heap__value2_afb832b0199ac380e2a1a658578375ca6}{const\_reference}} = \textcolor{keyword}{const} element\_type\&;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01236}01236 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01237}01237    \textcolor{keyword}{using }Base::Base;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01238}01238    \textcolor{keyword}{using }Base::operator=;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01239}\mbox{\hyperlink{classkblib_1_1heap__value2_a5c0e173d50e9ea8273e256126b546c0e}{01239}}    \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_l01240}\mbox{\hyperlink{classkblib_1_1heap__value2_a240b30d2a2084556b21f8190a6d0e1c4}{01240}}    \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_l01241}01241 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01242}01242    \textcolor{keyword}{using }Base::release;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01243}01243    \textcolor{keyword}{using }Base::reset;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01244}01244    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{Base::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01245}01245 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01246}01246    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{Base::get}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01247}01247    \textcolor{keyword}{using }Base::get\_deleter;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01248}01248    \textcolor{keyword}{using }Base::operator bool;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01249}01249 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01250}01250    \textcolor{keyword}{using }Base::operator*;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01251}01251    \textcolor{keyword}{using }Base::operator-\/>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01252}01252 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01253}\mbox{\hyperlink{classkblib_1_1heap__value2_a77081f53b4476e936397ccf42a571a93}{01253}}    \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_l01254}\mbox{\hyperlink{classkblib_1_1heap__value2_a8d4445d7f4bd90523dbce54ed8ef34e2}{01254}}    \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_l01255}01255       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01256}01256    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01257}\mbox{\hyperlink{classkblib_1_1heap__value2_a0276dc3dd41051c5b68233acafc50033}{01257}}    \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_l01258}\mbox{\hyperlink{classkblib_1_1heap__value2_ad4de6e28d53940d3be298389fe792191}{01258}}    \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_l01259}01259       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01260}01260    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01261}01261 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01262}\mbox{\hyperlink{classkblib_1_1heap__value2_ade3cdd82536480c8dcba2b7dfd73c191}{01262}}    \mbox{\hyperlink{classkblib_1_1heap__value2_ade3cdd82536480c8dcba2b7dfd73c191}{\string~heap\_value2}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01263}01263 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01264}01264 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01265}01265 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01266}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4}{01266}} \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_l01267}01267    \textcolor{keyword}{using }Base = std::unique\_ptr<T[], D>;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01268}01268 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01269}01269  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01270}01270    \textcolor{keyword}{using }typename Base::deleter\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01271}01271    \textcolor{keyword}{using }typename Base::element\_type;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01272}01272    \textcolor{keyword}{using }typename Base::pointer;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01273}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac8c531b70decdea8b1056a596b716973}{01273}}    \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_l01274}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac38ffa7fefb3fd2e19b1ca7b6ff5976e}{01274}}    \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_l01275}01275 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01276}01276    \textcolor{keyword}{using }Base::Base;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01277}01277    \textcolor{keyword}{using }Base::operator=;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01278}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_ac01c4b7353ca7d4fef3f3b8ed4a49c1e}{01278}}    \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_l01279}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a80b0f6686d44da8d11fe37d36891ddfb}{01279}}    \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_l01280}01280 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01281}01281    \textcolor{keyword}{using }Base::release;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01282}01282    \textcolor{keyword}{using }Base::reset;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01283}01283    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{Base::swap}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01284}01284 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01285}01285    \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{Base::get}};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01286}01286    \textcolor{keyword}{using }Base::get\_deleter;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01287}01287    \textcolor{keyword}{using }Base::operator bool;}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01288}01288 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01289}01289    \textcolor{keyword}{using }Base::operator[];}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01290}01290 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01291}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a70de2999295169b199004b666e9cf1f7}{01291}}    \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_l01292}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a0b3434703643fa8845559e39c6068503}{01292}}    \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_l01293}01293       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01294}01294    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01295}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a3ca0ae5de5a1a427253d1f470184ffe8}{01295}}    \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_l01296}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_aad0a4b86c685bdec005bbd799b497a94}{01296}}    \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_l01297}01297       \textcolor{keywordflow}{return} **\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01298}01298    \}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01299}01299 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01300}\mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4_a735694fbc0c61c3e89cf761101b822d9}{01300}}    \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_l01301}01301 \};}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01302}01302 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01303}01303 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01304}01304 }
\DoxyCodeLine{\Hypertarget{fakestd_8h_source_l01305}01305 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// KBLIB\_FAKESTD\_H}}

\end{DoxyCode}
