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