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