\hypertarget{fakestd_8h}{}\doxysection{kblib/fakestd.h File Reference} \label{fakestd_8h}\index{kblib/fakestd.h@{kblib/fakestd.h}} This header provides some features of C++17 $<$type\+\_\+traits$>$ and other headers for C++14, as well as some other traits. {\ttfamily \#include \char`\"{}tdecl.\+h\char`\"{}}\newline {\ttfamily \#include $<$array$>$}\newline {\ttfamily \#include $<$limits$>$}\newline {\ttfamily \#include $<$memory$>$}\newline {\ttfamily \#include $<$type\+\_\+traits$>$}\newline {\ttfamily \#include $<$utility$>$}\newline Include dependency graph for fakestd.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{fakestd_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{fakestd_8h__dep__incl} \end{center} \end{figure} \doxysubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result}{kblib\+::fakestd\+::detail\+::invoke\+\_\+result$<$ Always\+Void, typename,... $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__result_3_01decltype_07void_07invoke_07std_1_1declval2a949569b7f113df0e2599527ee1c97c}{kblib\+::fakestd\+::detail\+::invoke\+\_\+result$<$ decltype(void(invoke(std\+::declval$<$ F $>$(), std\+::declval$<$ Args $>$()...))), F, Args... $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1invoke__result}{kblib\+::fakestd\+::invoke\+\_\+result$<$ F, Arg\+Types $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1make__void}{kblib\+::fakestd\+::make\+\_\+void$<$ Ts $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nat}{kblib\+::fakestd\+::detail\+::nat}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1two}{kblib\+::fakestd\+::detail\+::two}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable__impl}{kblib\+::fakestd\+::detail\+::is\+\_\+referenceable\+\_\+impl}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1is__referenceable}{kblib\+::fakestd\+::detail\+::is\+\_\+referenceable$<$ Tp $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with}{kblib\+::fakestd\+::detail\+::swappable\+\_\+with$<$ Tp, Up, Not\+Void $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1swappable__with_3_01_tp_00_01_up_00_01false_01_4}{kblib\+::fakestd\+::detail\+::swappable\+\_\+with$<$ Tp, Up, false $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+swappable\+\_\+with$<$ Tp, Up, Swappable $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__swappable__with_3_01_tp_00_01_up_00_01false_01_4}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+swappable\+\_\+with$<$ Tp, Up, false $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable}{kblib\+::fakestd\+::is\+\_\+swappable$<$ Tp $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+swappable$<$ Tp $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__swappable__with}{kblib\+::fakestd\+::is\+\_\+swappable\+\_\+with$<$ Tp, Up $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable__with}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+swappable\+\_\+with$<$ Tp, Up $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1not__fn__t}{kblib\+::fakestd\+::detail\+::not\+\_\+fn\+\_\+t$<$ F $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{kblib\+::fakestd\+::in\+\_\+place\+\_\+t}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invokable__r}{kblib\+::fakestd\+::detail\+::invokable\+\_\+r$<$ Ret, Fp, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1nothrow__invokable__r__imp}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+invokable\+\_\+r\+\_\+imp$<$ Is\+Invokable, Is\+CVVoid, Ret, Fp, Args $>$}} \item struct \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}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+invokable\+\_\+r\+\_\+imp$<$ true, false, Ret, Fp, Args... $>$}} \item struct \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}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+invokable\+\_\+r\+\_\+imp$<$ true, true, Ret, Fp, Args... $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1detail_1_1invoke__of}{kblib\+::fakestd\+::detail\+::invoke\+\_\+of$<$ Fp, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable}{kblib\+::fakestd\+::is\+\_\+invocable$<$ Fn, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__invocable__r}{kblib\+::fakestd\+::is\+\_\+invocable\+\_\+r$<$ Ret, Fn, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+invocable$<$ Fn, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable__r}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+invocable\+\_\+r$<$ Ret, Fn, Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1meta__type}{kblib\+::meta\+\_\+type$<$ Ts $>$}} \item struct \mbox{\hyperlink{structkblib_1_1meta__type_3_01_t_01_4}{kblib\+::meta\+\_\+type$<$ T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1void__if}{kblib\+::void\+\_\+if$<$ bool $>$}} \item struct \mbox{\hyperlink{structkblib_1_1void__if_3_01true_01_4}{kblib\+::void\+\_\+if$<$ true $>$}} \item struct \mbox{\hyperlink{structkblib_1_1metafunction__success}{kblib\+::metafunction\+\_\+success$<$ T, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1metafunction__success_3_01_t_00_01void__t_3_01typename_01_t_1_1type_01_4_01_4}{kblib\+::metafunction\+\_\+success$<$ T, void\+\_\+t$<$ typename T\+::type $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1is__callable}{kblib\+::is\+\_\+callable$<$ T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1return__assert}{kblib\+::return\+\_\+assert$<$ V, T $>$}} \begin{DoxyCompactList}\small\item\em Essentially just like std\+::enable\+\_\+if, but with a different name that makes it clearer what it does in the context of return type SFINAE. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1return__assert_3_01true_00_01_t_01_4}{kblib\+::return\+\_\+assert$<$ true, T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1apply__impl}{kblib\+::detail\+::apply\+\_\+impl$<$ F, Arg, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1has__member__swap}{kblib\+::has\+\_\+member\+\_\+swap$<$ T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1is__tuple__like}{kblib\+::is\+\_\+tuple\+\_\+like$<$ T, typename $>$}} \item struct \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}{kblib\+::is\+\_\+tuple\+\_\+like$<$ T, void\+\_\+t$<$ typename std\+::tuple\+\_\+element$<$ 0, T $>$\+::type $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1type__list}{kblib\+::detail\+::type\+\_\+list$<$ Args $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1type__map__el}{kblib\+::detail\+::type\+\_\+map\+\_\+el$<$ K, V $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1type__map}{kblib\+::detail\+::type\+\_\+map$<$ Key, Comp, Vals $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed}{kblib\+::detail\+::next\+\_\+larger\+\_\+signed$<$ T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1next__larger__signed_1_1false__compare}{kblib\+::detail\+::next\+\_\+larger\+\_\+signed$<$ T $>$\+::false\+\_\+compare}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1filter__signed_3_01_n_00_01true_01_4}{kblib\+::detail\+::filter\+\_\+signed$<$ N, true $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1filter__unsigned_3_01_n_00_01true_01_4}{kblib\+::detail\+::filter\+\_\+unsigned$<$ N, true $>$}} \item struct \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}{kblib\+::safe\+\_\+signed$<$ N, std\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+integral$<$ N $>$\+::value, void $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1copy__const}{kblib\+::copy\+\_\+const$<$ C, T, bool $>$}} \item struct \mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_00_01true_01_4}{kblib\+::copy\+\_\+const$<$ C, T, true $>$}} \item struct \mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_01_6_00_01true_01_4}{kblib\+::copy\+\_\+const$<$ C, T \&, true $>$}} \item struct \mbox{\hyperlink{structkblib_1_1copy__const_3_01_c_00_01_t_01_6_6_00_01true_01_4}{kblib\+::copy\+\_\+const$<$ C, T \&\&, true $>$}} \item struct \mbox{\hyperlink{structkblib_1_1value__detected}{kblib\+::value\+\_\+detected$<$ T, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1value__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4}{kblib\+::value\+\_\+detected$<$ T, void\+\_\+t$<$ typename T\+::value\+\_\+type $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1key__detected}{kblib\+::key\+\_\+detected$<$ T, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1key__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1key__type_01_4_01_4}{kblib\+::key\+\_\+detected$<$ T, void\+\_\+t$<$ typename T\+::key\+\_\+type $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1mapped__detected}{kblib\+::mapped\+\_\+detected$<$ T, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1mapped__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1mapped__type_01_4_01_4}{kblib\+::mapped\+\_\+detected$<$ T, void\+\_\+t$<$ typename T\+::mapped\+\_\+type $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1hash__detected}{kblib\+::hash\+\_\+detected$<$ T, typename $>$}} \item struct \mbox{\hyperlink{structkblib_1_1hash__detected_3_01_t_00_01void__t_3_01typename_01_t_1_1hasher_01_4_01_4}{kblib\+::hash\+\_\+detected$<$ T, void\+\_\+t$<$ typename T\+::hasher $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1value__type__linear}{kblib\+::value\+\_\+type\+\_\+linear$<$ Container, bool, T $>$}} \item struct \mbox{\hyperlink{structkblib_1_1value__type__linear_3_01_container_00_01false_00_01typename_01_container_1_1value__type_01_4}{kblib\+::value\+\_\+type\+\_\+linear$<$ Container, false, typename Container\+::value\+\_\+type $>$}} \item struct \mbox{\hyperlink{structkblib_1_1is__linear__container}{kblib\+::is\+\_\+linear\+\_\+container$<$ Container $>$}} \item struct \mbox{\hyperlink{structkblib_1_1key__type__setlike}{kblib\+::key\+\_\+type\+\_\+setlike$<$ Container, bool, bool $>$}} \item struct \mbox{\hyperlink{structkblib_1_1key__type__setlike_3_01_container_00_01true_00_01false_01_4}{kblib\+::key\+\_\+type\+\_\+setlike$<$ Container, true, false $>$}} \item struct \mbox{\hyperlink{structkblib_1_1detail_1_1pointer}{kblib\+::detail\+::pointer$<$ D, T, typename $>$}} \item struct \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}{kblib\+::detail\+::pointer$<$ D, T, void\+\_\+t$<$ typename D\+::pointer $>$ $>$}} \item struct \mbox{\hyperlink{structkblib_1_1in__place__agg__t}{kblib\+::in\+\_\+place\+\_\+agg\+\_\+t}} \item class \mbox{\hyperlink{classkblib_1_1heap__value}{kblib\+::heap\+\_\+value$<$ T $>$}} \item class \mbox{\hyperlink{classkblib_1_1heap__value2}{kblib\+::heap\+\_\+value2$<$ T, D $>$}} \item class \mbox{\hyperlink{classkblib_1_1heap__value2_3_01_t_0f_0e_00_01_d_01_4}{kblib\+::heap\+\_\+value2$<$ T\mbox{[}$\,$\mbox{]}, D $>$}} \end{DoxyCompactItemize} \doxysubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespacekblib}{kblib}} \begin{DoxyCompactList}\small\item\em The main namespace in which all entities from kblib are defined. \end{DoxyCompactList}\item namespace \mbox{\hyperlink{namespacekblib_1_1detail}{kblib\+::detail}} \begin{DoxyCompactList}\small\item\em The namespace used for implementation details within kblib. \end{DoxyCompactList}\item namespace \mbox{\hyperlink{namespacekblib_1_1fakestd}{kblib\+::fakestd}} \begin{DoxyCompactList}\small\item\em A namespace which holds all the C++14 implementations of C++17 standard library features. In C++17, it is simply defined as an alias to std. \end{DoxyCompactList}\item namespace \mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail}{kblib\+::fakestd\+::detail}} \begin{DoxyCompactList}\small\item\em Implementation details for \mbox{\hyperlink{namespacekblib_1_1fakestd}{kblib\+::fakestd}} features. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection*{Macros} \begin{DoxyCompactItemize} \item \#define \mbox{\hyperlink{fakestd_8h_a1bd1bd94076a0a71cc107c28805209fd}{KBLIB\+\_\+\+FAKESTD}}~(\+\_\+\+\_\+cplusplus $<$ 201703L) \end{DoxyCompactItemize} \doxysubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$bool B, typename T = void$>$ }\\using \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}} = typename std\+::enable\+\_\+if$<$ B, T $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_a9dcf2233bc360ff26fbbf82d98cdc64d}{kblib\+::decay\+\_\+t}} = typename std\+::decay$<$ T $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_ad3067cf43d6c4d6d61e9bbb81c145cf9}{kblib\+::remove\+\_\+cvref\+\_\+t}} = typename std\+::remove\+\_\+reference$<$ typename std\+::remove\+\_\+cv$<$ T $>$\+::type $>$\+::type \item {\footnotesize template$<$bool v$>$ }\\using \mbox{\hyperlink{namespacekblib_aab6846d277428f1e4b61ced2ed64dd0b}{kblib\+::bool\+\_\+constant}} = std\+::integral\+\_\+constant$<$ bool, v $>$ \item {\footnotesize template$<$typename F , typename... Arg\+Types$>$ }\\using \mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{kblib\+::fakestd\+::invoke\+\_\+result\+\_\+t}} = typename invoke\+\_\+result$<$ F, Arg\+Types... $>$\+::type \item {\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{kblib\+::fakestd\+::void\+\_\+t}} = typename make\+\_\+void$<$ Ts... $>$\+::type \item {\footnotesize template$<$class Fp , class... Args$>$ }\\using \mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_aca747f62c5b3039ca3e183555c1e8299}{kblib\+::fakestd\+::detail\+::invokable}} = invokable\+\_\+r$<$ void, Fp, Args... $>$ \item {\footnotesize template$<$class Ret , class Fp , class... Args$>$ }\\using \mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a3555ca296e45965f5f512404b99f7eec}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+invokable\+\_\+r}} = nothrow\+\_\+invokable\+\_\+r\+\_\+imp$<$ invokable\+\_\+r$<$ Ret, Fp, Args... $>$\+::value, std\+::is\+\_\+void$<$ Ret $>$\+::value, Ret, Fp, Args... $>$ \item {\footnotesize template$<$class Fp , class... Args$>$ }\\using \mbox{\hyperlink{namespacekblib_1_1fakestd_1_1detail_a55d1649cdde1e2c0172f7b62e106fe40}{kblib\+::fakestd\+::detail\+::nothrow\+\_\+invokable}} = nothrow\+\_\+invokable\+\_\+r\+\_\+imp$<$ invokable$<$ Fp, Args... $>$\+::value, true, void, Fp, Args... $>$ \item {\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespacekblib_af9d6c610a6e855aa1eba054060166247}{kblib\+::meta\+\_\+type\+\_\+t}} = typename meta\+\_\+type$<$ Ts... $>$\+::type \item {\footnotesize template$<$bool b$>$ }\\using \mbox{\hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{kblib\+::void\+\_\+if\+\_\+t}} = typename void\+\_\+if$<$ b $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_a5d358e0474506e99331fde45ce81f78f}{kblib\+::metafunction\+\_\+value\+\_\+t}} = std\+::integral\+\_\+constant$<$ decltype(T\+::value), T\+::value $>$ \item {\footnotesize template$<$bool V, typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_acdb4473ef9196a18a0e37e05171729f0}{kblib\+::return\+\_\+assert\+\_\+t}} = typename return\+\_\+assert$<$ V, T $>$\+::type \item {\footnotesize template$<$typename N $>$ }\\using \mbox{\hyperlink{namespacekblib_1_1detail_aa78d53d4378e2b944726396fd2ea2cbc}{kblib\+::detail\+::make\+\_\+smap\+\_\+el}} = type\+\_\+map\+\_\+el$<$ static\+\_\+cast$<$ std\+::intmax\+\_\+t $>$(msb\+\_\+possible$<$ N $>$()), N $>$ \item {\footnotesize template$<$typename N $>$ }\\using \mbox{\hyperlink{namespacekblib_1_1detail_a81503c6f3c66c26bcacc9a672cdc1679}{kblib\+::detail\+::filter\+\_\+signed\+\_\+t}} = typename filter\+\_\+signed$<$ N $>$\+::type \item {\footnotesize template$<$typename N $>$ }\\using \mbox{\hyperlink{namespacekblib_1_1detail_a1d5a56a57c2822f86888933c0fac7164}{kblib\+::detail\+::filter\+\_\+unsigned\+\_\+t}} = typename filter\+\_\+unsigned$<$ N $>$\+::type \item {\footnotesize template$<$typename N $>$ }\\using \mbox{\hyperlink{namespacekblib_ace81df18accc355bebf9245f09107b51}{kblib\+::safe\+\_\+signed\+\_\+t}} = typename safe\+\_\+signed$<$ N $>$\+::type \item {\footnotesize template$<$typename C , typename V $>$ }\\using \mbox{\hyperlink{namespacekblib_af973fdd9c2dddf6db3744ae83902fc72}{kblib\+::copy\+\_\+const\+\_\+t}} = typename copy\+\_\+const$<$ C, V $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_aa0f56c295f64726c092c84a77f025a85}{kblib\+::value\+\_\+detected\+\_\+t}} = typename value\+\_\+detected$<$ T $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_ac84fd1f7586e640147679a7c24a746d8}{kblib\+::key\+\_\+detected\+\_\+t}} = typename key\+\_\+detected$<$ T $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_aea08f7e56313388f4681f002a13793ba}{kblib\+::mapped\+\_\+detected\+\_\+t}} = typename mapped\+\_\+detected$<$ T $>$\+::type \item {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_a73fd7f69e7f6233d2c480a16e86b03a0}{kblib\+::hash\+\_\+detected\+\_\+t}} = typename hash\+\_\+detected$<$ T $>$\+::type \item {\footnotesize template$<$typename Container $>$ }\\using \mbox{\hyperlink{namespacekblib_ac04bc7261d579d570a3847df654bc209}{kblib\+::value\+\_\+type\+\_\+linear\+\_\+t}} = typename value\+\_\+type\+\_\+linear$<$ Container $>$\+::type \item {\footnotesize template$<$typename Container $>$ }\\using \mbox{\hyperlink{namespacekblib_a08c333aaa30dec55fb9d3e7d616093bd}{kblib\+::key\+\_\+type\+\_\+setlike\+\_\+t}} = typename key\+\_\+type\+\_\+setlike$<$ Container $>$\+::type \end{DoxyCompactItemize} \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename F , typename... Args, enable\+\_\+if\+\_\+t$<$ not std\+::is\+\_\+member\+\_\+pointer$<$ remove\+\_\+cvref\+\_\+t$<$ F $>$ $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a9fcbe60cc8d89d741dc327bee247fbcb}{kblib\+::detail\+::do\+\_\+invoke}} (F \&\&f, Args \&\&... args) noexcept(noexcept(std\+::forward$<$ F $>$(f)(std\+::forward$<$ Args $>$(args)...))) -\/$>$ decltype(auto) \item {\footnotesize template$<$typename F , typename Object , typename... Args, enable\+\_\+if\+\_\+t$<$ not std\+::is\+\_\+pointer$<$ remove\+\_\+cvref\+\_\+t$<$ Object $>$ $>$\+::value and std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ F $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a3814b2a778b24c77c5b25f0ba6ee517a}{kblib\+::detail\+::do\+\_\+invoke}} (F f, Object \&\&obj, Args \&\&... args) noexcept(noexcept((std\+::forward$<$ Object $>$(obj).$\ast$f)(std\+::forward$<$ Args $>$(args)...))) -\/$>$ decltype(auto) \item {\footnotesize template$<$typename F , typename Pointer , typename... Args, enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+pointer$<$ Pointer $>$\+::value and std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ F $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a45e19fa5297851e924dc28b9ca9ebc5c}{kblib\+::detail\+::do\+\_\+invoke}} (F f, Pointer ptr, Args \&\&... args) noexcept(noexcept((ptr-\/$>$ $\ast$f)(std\+::forward$<$ Args $>$(args)...))) -\/$>$ decltype(auto) \item {\footnotesize template$<$typename Member , typename Object , enable\+\_\+if\+\_\+t$<$ not std\+::is\+\_\+pointer$<$ remove\+\_\+cvref\+\_\+t$<$ Object $>$ $>$\+::value and std\+::is\+\_\+member\+\_\+object\+\_\+pointer$<$ Member $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a53d75bc53ab7612ecbf8f31d4f125194}{kblib\+::detail\+::do\+\_\+invoke}} (Member mem, Object \&\&obj) noexcept -\/$>$ decltype(auto) \item {\footnotesize template$<$typename Member , typename Pointer , enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+pointer$<$ Pointer $>$\+::value and std\+::is\+\_\+member\+\_\+object\+\_\+pointer$<$ Member $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a9be193ea0038cdf6bec7cef4173f2d77}{kblib\+::detail\+::do\+\_\+invoke}} (Member mem, Pointer ptr) noexcept -\/$>$ decltype(auto) \item {\footnotesize template$<$typename F , typename... Args$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib\+::invoke}} (F \&\&f, Args \&\&... args) noexcept(noexcept(detail\+::do\+\_\+invoke(std\+::forward$<$ F $>$(f), std\+::forward$<$ Args $>$(args)...))) -\/$>$ decltype(auto) \item {\footnotesize template$<$typename F $>$ }\\auto \mbox{\hyperlink{namespacekblib_1_1fakestd_a10b8e048c2aa3988eba70d354014a991}{kblib\+::fakestd\+::not\+\_\+fn}} (F \&\&f) -\/$>$ detail\+::not\+\_\+fn\+\_\+t$<$ F $>$ \item {\footnotesize template$<$class Forward\+It $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1fakestd_a02db9a7161f158d41173dfa1afd5441e}{kblib\+::fakestd\+::max\+\_\+element}} (Forward\+It first, Forward\+It last) -\/$>$ Forward\+It \item {\footnotesize template$<$class Forward\+It , class Compare $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1fakestd_acc11b01e10ca16f59e4cc8a2ffd2fbdc}{kblib\+::fakestd\+::max\+\_\+element}} (Forward\+It first, Forward\+It last, Compare comp) -\/$>$ Forward\+It \item {\footnotesize template$<$class C $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1fakestd_adb8781bc0e5d1ba4ca4624293c0c98ae}{kblib\+::fakestd\+::size}} (const C \&c) -\/$>$ decltype(c.\+size()) \item {\footnotesize template$<$class T , std\+::size\+\_\+t N$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1fakestd_a432682ee4f57ba5e6c16aea83751852c}{kblib\+::fakestd\+::size}} (const T(\&)\mbox{[}N\mbox{]}) noexcept -\/$>$ std\+::size\+\_\+t \item {\footnotesize template$<$typename F , typename Arg $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a3873199be1651ec4e0fda92171b2b82c}{kblib\+::apply}} (F \&\&f, Arg \&\&arg) noexcept(noexcept(detail\+::apply\+\_\+impl$<$ F, Arg $>$\+::do\+\_\+apply(std\+::forward$<$ F $>$(f), std\+::forward$<$ Arg $>$(arg), std\+::index\+\_\+sequence$<$ std\+::tuple\+\_\+size$<$ Arg $>$\+::value $>$\{\}))) -\/$>$ decltype(auto) \item {\footnotesize template$<$typename T $>$ }\\auto \mbox{\hyperlink{namespacekblib_ae8b1b4dad48864760dd5c1ba368c06c9}{kblib\+::to\+\_\+unique}} (gsl\+::owner$<$ T $\ast$ $>$ p) -\/$>$ std\+::unique\+\_\+ptr$<$ T $>$ \item {\footnotesize template$<$typename T , typename D $>$ }\\auto \mbox{\hyperlink{namespacekblib_acf70692a40d94aa8df04ea37d05c7a64}{kblib\+::to\+\_\+unique}} (gsl\+::owner$<$ T $\ast$ $>$ p, D \&\&d) -\/$>$ std\+::unique\+\_\+ptr$<$ T, D $>$ \item {\footnotesize template$<$typename I $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{kblib\+::to\+\_\+unsigned}} (I x) -\/$>$ std\+::make\+\_\+unsigned\+\_\+t$<$ I $>$ \begin{DoxyCompactList}\small\item\em Cast integral argument to corresponding unsigned type. \end{DoxyCompactList}\item {\footnotesize template$<$typename I $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a1909a64960663825ccc4eb98e4637df2}{kblib\+::to\+\_\+signed}} (I x) -\/$>$ std\+::make\+\_\+signed\+\_\+t$<$ I $>$ \begin{DoxyCompactList}\small\item\em Cast integral argument to corresponding signed type. \end{DoxyCompactList}\item {\footnotesize template$<$typename A , typename F $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_accb66942cbfbca80c254045501c96cc9}{kblib\+::signed\+\_\+cast}} (F x) -\/$>$ enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+integral$<$ A $>$\+::value and std\+::is\+\_\+integral$<$ F $>$\+::value and std\+::is\+\_\+signed$<$ A $>$\+::value, std\+::make\+\_\+signed\+\_\+t$<$ F $>$ $>$ \begin{DoxyCompactList}\small\item\em Cast argument to equivalently-\/sized type with the same signednessas the template parameter. \end{DoxyCompactList}\item {\footnotesize template$<$typename... Ts$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a468066bdd6f559d4f86d0b773af3e683}{kblib\+::detail\+::ignore}} (Ts \&\&...) noexcept -\/$>$ void \item {\footnotesize template$<$typename T , std\+::size\+\_\+t... Is$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_adaf3b8b27764608e70dea9b340106c20}{kblib\+::detail\+::swap\+\_\+tuple\+\_\+impl}} (T \&a, T \&b, std\+::index\+\_\+sequence$<$ Is... $>$) noexcept(noexcept(ignore(((void) swap(std\+::get$<$ Is $>$(a), std\+::get$<$ Is $>$(b)), 0)...))) -\/$>$ void \item {\footnotesize template$<$typename T , typename U = T$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{kblib\+::exchange}} (T \&obj, U \&\&new\+\_\+value) -\/$>$ T \item constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_add427a975267711b7a1a94fc13aab8b4}{kblib\+::detail\+::msb}} (std\+::uintmax\+\_\+t x) -\/$>$ std\+::uintmax\+\_\+t \item {\footnotesize template$<$typename Num $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail_a7862ff8e4fb97f3ad170829296360714}{kblib\+::detail\+::msb\+\_\+possible}} () -\/$>$ Num \item {\footnotesize template$<$typename N $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_ae842572db70fc0a71d6ea2c2c33f3eff}{kblib\+::signed\+\_\+promote}} (N x) noexcept -\/$>$ safe\+\_\+signed\+\_\+t$<$ N $>$ \item {\footnotesize template$<$class Input\+It1 , class Input\+It2 $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{kblib\+::equal}} (Input\+It1 first1, Input\+It1 last1, Input\+It2 first2) -\/$>$ bool \item {\footnotesize template$<$typename Input\+It1 , typename Input\+It2 , typename Binary\+Predicate , typename \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}}$<$ not std\+::is\+\_\+same$<$ Input\+It2, Binary\+Predicate $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a4b33292eab2082159622b9c062b665c0}{kblib\+::equal}} (Input\+It1 first1, Input\+It1 last1, Input\+It2 first2, Binary\+Predicate p) -\/$>$ bool \item {\footnotesize template$<$class Random\+It1 , class Random\+It2 , typename \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}}$<$ std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Random\+It1 $>$\+::iterator\+\_\+category $>$\+::value and std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Random\+It2 $>$\+::iterator\+\_\+category $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_aa5cefb6480de50ffafc875fedc55538a}{kblib\+::equal}} (Random\+It1 first1, Random\+It1 last1, Random\+It2 first2, Random\+It2 last2) -\/$>$ bool \item {\footnotesize template$<$class Random\+It1 , class Random\+It2 , typename Binary\+Predicate , typename \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}}$<$ std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Random\+It1 $>$\+::iterator\+\_\+category $>$\+::value and std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Random\+It2 $>$\+::iterator\+\_\+category $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a391794b2905afd47e4ba541643472d33}{kblib\+::equal}} (Random\+It1 first1, Random\+It1 last1, Random\+It2 first2, Random\+It2 last2, Binary\+Predicate p) -\/$>$ bool \item {\footnotesize template$<$class Input\+It1 , class Input\+It2 , typename \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}}$<$ not std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Input\+It1 $>$\+::iterator\+\_\+category $>$\+::value or not std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Input\+It2 $>$\+::iterator\+\_\+category $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a131eb5b6f49dfb59ab977a066d1869e7}{kblib\+::equal}} (Input\+It1 first1, Input\+It1 last1, Input\+It2 first2, Input\+It2 last2) -\/$>$ bool \item {\footnotesize template$<$typename Input\+It1 , typename Input\+It2 , typename Binary\+Predicate , typename \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{kblib\+::enable\+\_\+if\+\_\+t}}$<$ not std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Input\+It1 $>$\+::iterator\+\_\+category $>$\+::value or not std\+::is\+\_\+base\+\_\+of$<$ std\+::random\+\_\+access\+\_\+iterator\+\_\+tag, typename std\+::iterator\+\_\+traits$<$ Input\+It2 $>$\+::iterator\+\_\+category $>$\+::value, int $>$ = 0$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_adbde434818524955250916aad1e9f2d5}{kblib\+::equal}} (Input\+It1 first1, Input\+It1 last1, Input\+It2 first2, Input\+It2 last2, Binary\+Predicate p) -\/$>$ bool \item {\footnotesize template$<$typename C $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{kblib\+::size}} (const C \&c) -\/$>$ decltype(c.\+size()) \item {\footnotesize template$<$typename T , std\+::size\+\_\+t N$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_a0b930fad0b5a938aea712565cec9037e}{kblib\+::size}} (const T(\&)\mbox{[}N\mbox{]}) noexcept -\/$>$ std\+::size\+\_\+t \item {\footnotesize template$<$class Input\+It1 , class Input\+It2 $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_aec67bf14d264f3587e3b86645af62d2a}{kblib\+::lexicographical\+\_\+compare}} (Input\+It1 first1, Input\+It1 last1, Input\+It2 first2, Input\+It2 last2) -\/$>$ bool \end{DoxyCompactItemize} \doxysubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$class Tp , class Up $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_a9a5cfade6cc983f22b072f767fb12354}{kblib\+::fakestd\+::is\+\_\+swappable\+\_\+with\+\_\+v}} = is\+\_\+swappable\+\_\+with$<$Tp, Up$>$\+::value \item {\footnotesize template$<$class Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_a0d19b1962ac16e513208678ca5fdeaf8}{kblib\+::fakestd\+::is\+\_\+swappable\+\_\+v}} = is\+\_\+swappable$<$Tp$>$\+::value \item {\footnotesize template$<$class Tp , class Up $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_a211e13ec19d4dff8aa0be49de33d1f3d}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+swappable\+\_\+with\+\_\+v}} = is\+\_\+nothrow\+\_\+swappable\+\_\+with$<$Tp, Up$>$\+::value \item {\footnotesize template$<$class Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_ac3e868e4110d6024c05074addc73e324}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+swappable\+\_\+v}} = is\+\_\+nothrow\+\_\+swappable$<$Tp$>$\+::value \item {\footnotesize template$<$class Fn , class... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_a4e5bf54f9bf20b815a54f4af8ec981e1}{kblib\+::fakestd\+::is\+\_\+invocable\+\_\+v}} = is\+\_\+invocable$<$Fn, Args...$>$\+::value \item {\footnotesize template$<$class Ret , class Fn , class... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_ad4ea6d18af1571fef332d9af2b78f34b}{kblib\+::fakestd\+::is\+\_\+invocable\+\_\+r\+\_\+v}} = is\+\_\+invocable\+\_\+r$<$Ret, Fn, Args...$>$\+::value \item {\footnotesize template$<$class Fn , class... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_ac9a104c7ce160ac16e269f3ce30c013e}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+invocable\+\_\+v}} = is\+\_\+nothrow\+\_\+invocable$<$Fn, Args...$>$\+::value \item {\footnotesize template$<$class Ret , class Fn , class... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_1_1fakestd_af141f5287afbf73d05dd28c9e0d94b6e}{kblib\+::fakestd\+::is\+\_\+nothrow\+\_\+invocable\+\_\+r\+\_\+v}} = is\+\_\+nothrow\+\_\+invocable\+\_\+r$<$Ret, Fn, Args...$>$\+::value \item \begin{tabbing} xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill struct \{\\ \} \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{kblib::swap}}\\ \end{tabbing}\item {\footnotesize template$<$typename T $>$ }\\constexpr std\+::intmax\+\_\+t \mbox{\hyperlink{namespacekblib_1_1detail_ac83b1d792994abd35a99b63c8732c2a7}{kblib\+::detail\+::max\+\_\+val}} = std\+::numeric\+\_\+limits$<$T$>$\+::max() \item {\footnotesize template$<$typename T $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_a927171c113d5559da2f0f2245ed5e9da}{kblib\+::value\+\_\+detected\+\_\+v}} = value\+\_\+detected$<$T$>$\+::value \item {\footnotesize template$<$typename T $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_aadf3de1384a8cce5b631b28711b4a47c}{kblib\+::key\+\_\+detected\+\_\+v}} = key\+\_\+detected$<$T$>$\+::value \item {\footnotesize template$<$typename T $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_a13ab67cd7841362d9e8da411066ca974}{kblib\+::mapped\+\_\+detected\+\_\+v}} = mapped\+\_\+detected$<$T$>$\+::value \item {\footnotesize template$<$typename T $>$ }\\constexpr bool \mbox{\hyperlink{namespacekblib_adbb2b4e744a5f165142f9a49cf5fa8b4}{kblib\+::hash\+\_\+detected\+\_\+v}} = hash\+\_\+detected$<$T$>$\+::value \item constexpr struct \mbox{\hyperlink{structkblib_1_1in__place__agg__t}{kblib\+::in\+\_\+place\+\_\+agg\+\_\+t}} \mbox{\hyperlink{namespacekblib_af44abb883b069d84630176b4b8cd26f6}{kblib\+::in\+\_\+place\+\_\+agg}} \end{DoxyCompactItemize} \doxysubsection{Detailed Description} This header provides some features of C++17 $<$type\+\_\+traits$>$ and other headers for C++14, as well as some other traits. \begin{DoxyAuthor}{Author} killerbee \end{DoxyAuthor} \begin{DoxyDate}{Date} 2019-\/2021 \end{DoxyDate} \begin{DoxyCopyright}{Copyright} GNU General Public Licence v3.\+0 \end{DoxyCopyright} Definition in file \mbox{\hyperlink{fakestd_8h_source}{fakestd.\+h}}. \doxysubsection{Macro Definition Documentation} \mbox{\Hypertarget{fakestd_8h_a1bd1bd94076a0a71cc107c28805209fd}\label{fakestd_8h_a1bd1bd94076a0a71cc107c28805209fd}} \index{fakestd.h@{fakestd.h}!KBLIB\_FAKESTD@{KBLIB\_FAKESTD}} \index{KBLIB\_FAKESTD@{KBLIB\_FAKESTD}!fakestd.h@{fakestd.h}} \doxysubsubsection{\texorpdfstring{KBLIB\_FAKESTD}{KBLIB\_FAKESTD}} {\footnotesize\ttfamily \#define KBLIB\+\_\+\+FAKESTD~(\+\_\+\+\_\+cplusplus $<$ 201703L)} Definition at line \mbox{\hyperlink{fakestd_8h_source_l00048}{48}} of file \mbox{\hyperlink{fakestd_8h_source}{fakestd.\+h}}.