\hypertarget{namespaceutl_1_1meta}{}\section{utl\+:\+:meta Namespace Reference} \label{namespaceutl_1_1meta}\index{utl\+::meta@{utl\+::meta}} \subsection*{Namespaces} \begin{DoxyCompactItemize} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1apply__impl}{apply\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl}{at\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1back__impl}{back\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1cat__impl}{cat\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1count__if__impl}{count\+\_\+if\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{detail}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1filter__impl}{filter\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1find__if__impl}{find\+\_\+if\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1fold__impl}{fold\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1front__impl}{front\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__back__impl}{pop\+\_\+back\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__front__impl}{pop\+\_\+front\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1replace__if__impl}{replace\+\_\+if\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1rev__fold__impl}{rev\+\_\+fold\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1reverse__impl}{reverse\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1seek__if__impl}{seek\+\_\+if\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__impl}{transform\+\_\+impl}} \item \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__lazy__impl}{transform\+\_\+lazy\+\_\+impl}} \end{DoxyCompactItemize} \subsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as}{not\+\_\+same\+\_\+as}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{quote\+\_\+i}} \begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap}{wrap}} \item struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{wrap\+\_\+i}} \begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\end{DoxyCompactItemize} \subsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\+\_\+}} = void \begin{DoxyCompactList}\small\item\em void\+\_\+ type alias \end{DoxyCompactList}\item {\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}} = void \begin{DoxyCompactList}\small\item\em void\+\_\+t type alias \end{DoxyCompactList}\item {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} = typename Tp\+::type \begin{DoxyCompactList}\small\item\em Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. \end{DoxyCompactList}\item using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}(-\/1)$>$ \begin{DoxyCompactList}\small\item\em The last position we can express for indexing. \end{DoxyCompactList}\item {\footnotesize template$<$bool B$>$ }\\using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$!B $>$ \begin{DoxyCompactList}\small\item\em Negate the {\itshape bool} constant parameter. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}} = \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}}$<$ \+\_\+\+Tp\+::type\+::value $>$ \begin{DoxyCompactList}\small\item\em not \end{DoxyCompactList}\item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{size}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ List\+::size()$>$ \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ List\+::empty()$>$ \item {\footnotesize template$<$typename T1 , typename T2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{pair}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ T1, T2 $>$ \item {\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{push\+\_\+front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} $>$, Ts... $>$, List $>$ $>$ \item {\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{push\+\_\+back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} $>$, Ts... $>$, List $>$ $>$ \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{all\+\_\+of}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ List $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}} $>$, Pred $>$ $>$ $>$ $>$ \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{any\+\_\+of}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, Pred $>$ $>$ $>$ \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{none\+\_\+of}} = \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, Pred $>$ $>$ \item {\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{use\+\_\+if\+\_\+same\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ \begin{DoxyCompactList}\small\item\em If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ !\mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ \begin{DoxyCompactList}\small\item\em If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item {\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}{use\+\_\+if\+\_\+any\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}}$<$ T1, Ts... $>$\+::value, T1 $>$ \begin{DoxyCompactList}\small\item\em If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\item {\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}{use\+\_\+if\+\_\+all\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}}$<$ T1, Ts... $>$\+::value, T1 $>$ \begin{DoxyCompactList}\small\item\em If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Tp , Tp v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}} = std\+::integral\+\_\+constant$<$ Tp, v $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$bool v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ bool, v $>$ \begin{DoxyCompactList}\small\item\em bool\+\_\+ type\+: integral constant wrapper for bool \end{DoxyCompactList}\item using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ true $>$ \begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with true value. \end{DoxyCompactList}\item using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ false $>$ \begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with false value. \end{DoxyCompactList}\item {\footnotesize template$<$int8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{int8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int8\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$uint8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{uint8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint8\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$int16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{int16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int16\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$uint16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{uint16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint16\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$int32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{int32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int32\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$uint32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{uint32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint32\+\_\+t, v $>$ \begin{DoxyCompactList}\small\item\em uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} \end{DoxyCompactList}\item {\footnotesize template$<$char v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{char\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ char, v $>$ \begin{DoxyCompactList}\small\item\em char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} \end{DoxyCompactList}\item {\footnotesize template$<$int v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int, v $>$ \begin{DoxyCompactList}\small\item\em int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} \end{DoxyCompactList}\item {\footnotesize template$<$long v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{long\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ long, v $>$ \begin{DoxyCompactList}\small\item\em long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} \end{DoxyCompactList}\item {\footnotesize template$<$index\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{index\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, v $>$ \begin{DoxyCompactList}\small\item\em index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item {\footnotesize template$<$size\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}, v $>$ \begin{DoxyCompactList}\small\item\em size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{sizeof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ sizeof(Tp)$>$ \item {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{alignof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ alignof(Tp)$>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$class Tp , Tp... Ints$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}} = std\+::integer\+\_\+sequence$<$ Tp, Ints... $>$ \item {\footnotesize template$<$typename Tp , Tp Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}} = std\+::make\+\_\+integer\+\_\+sequence$<$ Tp, Num $>$ \item {\footnotesize template$<$index\+\_\+t... Idx$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}{index\+\_\+sequence}} = \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Idx... $>$ \begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence. \end{DoxyCompactList}\item {\footnotesize template$<$index\+\_\+t Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}} = \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Num $>$ \begin{DoxyCompactList}\small\item\em Alias template make\+\_\+index\+\_\+sequence. \end{DoxyCompactList}\item {\footnotesize template$<$typename... Types$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{index\+\_\+sequence\+\_\+for}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}}$<$ sizeof...(Types)$>$ \begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence\+\_\+for. \end{DoxyCompactList}\end{DoxyCompactItemize} \begin{Indent}\textbf{ meta\+:\+:invoke}\par {\em A meta-\/programming \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke()}} analogous. A {\ttfamily meta\+::invocable} shall contain a nested template type named {\bfseries apply} which is bind to actual invocable meta-\/function. \begin{DoxyItemize} \item We can use {\ttfamily wrap$<$$>$} or even better {\ttfamily quote$<$$>$} in order to wrap a metafunction to a type (metafunction class) \item We can pass these wrapped types to other metafunctions \item We can {\ttfamily invoke$<$$>$} the inner {\ttfamily apply} from a wrapped metafunction class. \end{DoxyItemize}}\begin{DoxyCompactItemize} \item {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{identity\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}}$<$ \+\_\+\+Tp $>$ $>$ \begin{DoxyCompactList}\small\item\em identity type alias \end{DoxyCompactList}\end{DoxyCompactItemize} \end{Indent} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} = typename Fn\+::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ Args... $>$ \item {\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Args... $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$template$<$ typename... $>$ class F, typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{is\+\_\+applicable\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$ F, T... $>$ $>$ \begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} \end{DoxyCompactList}\item {\footnotesize template$<$typename Q , typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{is\+\_\+applicable\+\_\+qt}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{detail\+::is\+\_\+applicable\+\_\+q\+\_\+}}$<$ Q, T... $>$ $>$ \begin{DoxyCompactList}\small\item\em check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} \end{DoxyCompactList}\item {\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{is\+\_\+applicable\+\_\+it}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is... $>$ $>$ \begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$template$<$ class... $>$ class F, class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$ F, Ts... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{detail\+::defer\+\_\+}}$<$ F, Ts... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$ \begin{DoxyCompactList}\small\item\em defer alias template for F$<$\+Ts...$>$ \end{DoxyCompactList}\item {\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\+\_\+i}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{detail\+::defer\+\_\+i\+\_\+}}$<$ T, F, Is... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$ \begin{DoxyCompactList}\small\item\em defer\+\_\+i alias template for F$<$\+T, Is...$>$ \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$ Fns... $>$ \item {\footnotesize template$<$template$<$ typename... $>$ class... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{compose\+\_\+f}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{detail\+::compose\+\_\+f\+\_\+}}$<$ Fns... $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{detail\+::\+\_\+or\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{detail\+::\+\_\+and\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 $>$ }\\using \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\+\_\+same\+\_\+}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ $>$$>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$ \begin{DoxyCompactList}\small\item\em Negation. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1()+\+\_\+\+Tp2()), \+\_\+\+Tp1()+\+\_\+\+Tp2() $>$ \begin{DoxyCompactList}\small\item\em Addition. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}{mult}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() $\ast$\+\_\+\+Tp2()), \+\_\+\+Tp1() $\ast$\+\_\+\+Tp2() $>$ \begin{DoxyCompactList}\small\item\em Multiplication. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{divide}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2()/\+\_\+\+Tp2()), \+\_\+\+Tp1()/\+\_\+\+Tp2() $>$ \begin{DoxyCompactList}\small\item\em Division. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{modulo}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$ \begin{DoxyCompactList}\small\item\em Modulo. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}{sub}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp1, \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}}$<$ \+\_\+\+Tp2 $>$ $>$ \begin{DoxyCompactList}\small\item\em Substruction. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}{inc}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$ 1 $>$ $>$ \begin{DoxyCompactList}\small\item\em Increase. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}{dec}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$-\/1 $>$ $>$ \begin{DoxyCompactList}\small\item\em decrease \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ \+\_\+\+Tp1()==\+\_\+\+Tp2()$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1()$<$ \+\_\+\+Tp2())$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}{comp\+\_\+ne}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}}$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ \begin{DoxyCompactList}\small\item\em Not equal. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{comp\+\_\+gt}} = \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ \begin{DoxyCompactList}\small\item\em Greater than. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}{comp\+\_\+le}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ $>$ \begin{DoxyCompactList}\small\item\em Less or equal. \end{DoxyCompactList}\item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}{comp\+\_\+ge}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ \begin{DoxyCompactList}\small\item\em Greater or equal. \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename \+\_\+T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}{bitnot\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+T\+::value\+\_\+type,(typename \+\_\+\+T\+::value\+\_\+type)($\sim$\+\_\+T())$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{bitand\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \&\+\_\+\+Tp2()), \+\_\+\+Tp1() \&\+\_\+\+Tp2()$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}{bitor\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()), \+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}{bitxor\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}{shift\+\_\+left}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp()$<$$<$ shift())$>$ \item {\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}{shift\+\_\+right}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $>$ $>$ shift())$>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$bool B, typename... Args$>$ }\\using \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{detail\+::if\+\_\+c\+\_\+}}$<$ B, Args... $>$ $>$ \begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean. \end{DoxyCompactList}\item {\footnotesize template$<$typename If , typename... Args$>$ }\\using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} = \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}}$<$ If\+::type\+::value, Args... $>$ \begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean type. \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename T1 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{first\+\_\+of}} = T1 \begin{DoxyCompactList}\small\item\em Select the first type of a type sequence. \end{DoxyCompactList}\item {\footnotesize template$<$typename T1 , typename T2 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{second\+\_\+of}} = T2 \begin{DoxyCompactList}\small\item\em Select the second type of a type sequence. \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$bool If$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{when}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{detail\+::when\+\_\+}}$<$ If $>$ $>$ \begin{DoxyCompactList}\small\item\em Well formed only if {\ttfamily If} is true. \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}} = std\+::enable\+\_\+if$<$ If, \+\_\+\+Tp $>$ \begin{DoxyCompactList}\small\item\em enable\+\_\+if, imported from stl \end{DoxyCompactList}\item {\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}}$<$ If, \+\_\+\+Tp $>$ $>$ \begin{DoxyCompactList}\small\item\em alias template for enable\+\_\+if \end{DoxyCompactList}\end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$size\+\_\+t N, typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}} = typename \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts... $>$\+::template times$<$ N $>$ \item {\footnotesize template$<$typename N , typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{repeat}} = \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}}$<$ N\+::type\+::value, Ts... $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{apply\+\_\+impl\+::apply\+\_\+}}$<$ Fn, Seq $>$ \item {\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{apply\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ Fn, Seq $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , index\+\_\+t N$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{at\+\_\+impl\+::at\+\_\+}}$<$ List, N $>$ $>$ \item {\footnotesize template$<$typename List , typename N $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{at}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$ List, N\+::type\+::value $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{front\+\_\+impl\+::front\+\_\+}}$<$ List $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{back\+\_\+impl\+::back\+\_\+}}$<$ List $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... Lists$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{cat\+\_\+impl\+::cat\+\_\+}}$<$ Lists... $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+impl\+::fold\+\_\+}}$<$ List, V, Fn $>$ $>$ \item {\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{accumulate}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$ List, V, Fn $>$ \begin{DoxyCompactList}\small\item\em accumulate is an stl name for fold \end{DoxyCompactList}\item {\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{rev\+\_\+fold}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$ List, V, Fn $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{reverse\+\_\+impl\+::reverse\+\_\+}}$<$ List $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{pop\+\_\+front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+}}$<$ List $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{pop\+\_\+back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}}$<$ List $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{transform}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{transform\+\_\+impl\+::transform\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Args... $>$ $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{transform\+\_\+lazy}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Args... $>$ $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ \item {\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{find}} = \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ \item {\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{seek}} = \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ \item {\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{count}} = \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+impl\+::filter\+\_\+}}$<$ List, Pred, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$ \end{DoxyCompactItemize} \textbf{ }\par \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename List , typename Pred , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$ List, Pred, T, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$ \item {\footnotesize template$<$typename List , typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{replace}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$, U $>$ $>$ \end{DoxyCompactItemize} \begin{DoxyCompactItemize} \item {\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}} = typename \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args... $>$\+::detected \item {\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args... $>$ $>$ \item {\footnotesize template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{detected\+\_\+or\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detail\+::detected\+\_\+or}}$<$ Default, Op, Args... $>$ $>$ \item {\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ Expected, \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$ Op, Args... $>$ $>$ $>$ \item {\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\+\_\+detected\+\_\+convertible}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ std\+::is\+\_\+convertible$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$ Op, Args... $>$, To $>$ $>$ \item {\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}{is\+\_\+detected\+\_\+v}} = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}}$<$Op, Args...$>$\+::value \begin{DoxyCompactList}\small\item\em Detection predicate. \end{DoxyCompactList}\item {\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}{is\+\_\+detected\+\_\+exact\+\_\+v}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}}$<$ Expected, Op, Args...$>$\+::value \begin{DoxyCompactList}\small\item\em evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not \end{DoxyCompactList}\item {\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}{is\+\_\+detected\+\_\+convertible\+\_\+v}} \end{DoxyCompactItemize} \subsection{Typedef Documentation} \mbox{\Hypertarget{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}\label{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}} \index{utl\+::meta@{utl\+::meta}!accumulate@{accumulate}} \index{accumulate@{accumulate}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{accumulate}{accumulate}} {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{utl\+::meta\+::accumulate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$List, V, Fn$>$} accumulate is an stl name for fold \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 387 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}\label{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}} \index{utl\+::meta@{utl\+::meta}!add@{add}} \index{add@{add}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{add}{add}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{utl\+::meta\+::add}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() + \+\_\+\+Tp2()), \+\_\+\+Tp1() + \+\_\+\+Tp2() $>$} Addition. Definition at line 144 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}\label{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}} \index{utl\+::meta@{utl\+::meta}!alignof\+\_\+@{alignof\+\_\+}} \index{alignof\+\_\+@{alignof\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{alignof\+\_\+}{alignof\_}} {\footnotesize\ttfamily template$<$typename Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{utl\+::meta\+::alignof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$alignof(Tp)$>$} Computes the alignment required for any instance of the type {\ttfamily Tp}. Complexity $ O(1) $. Definition at line 120 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}\label{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}} \index{utl\+::meta@{utl\+::meta}!all\+\_\+of@{all\+\_\+of}} \index{all\+\_\+of@{all\+\_\+of}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{all\+\_\+of}{all\_of}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{utl\+::meta\+::all\+\_\+of}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} $<$List$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$>$, Pred$>$ $>$ $>$ $>$} Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily true\+\_\+} for all the elements in the {\ttfamily List} or if the {\ttfamily List} is empty and {\ttfamily false\+\_\+} otherwise. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 861 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}\label{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}} \index{utl\+::meta@{utl\+::meta}!any\+\_\+of@{any\+\_\+of}} \index{any\+\_\+of@{any\+\_\+of}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{any\+\_\+of}{any\_of}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{utl\+::meta\+::any\+\_\+of}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, Pred$>$ $>$ $>$} Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily true\+\_\+} for any of the elements in the {\ttfamily List} and {\ttfamily false\+\_\+} otherwise. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 868 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}\label{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}} \index{utl\+::meta@{utl\+::meta}!apply@{apply}} \index{apply@{apply}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{apply}{apply}} {\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{utl\+::meta\+::apply}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{apply\+\_\+impl\+::apply\+\_\+}}$<$Fn, Seq$>$} Apply the Invocable {\ttfamily Fn} using the types in the type {\ttfamily Seq} as arguments. \begin{DoxyNote}{Note} This is the opposed operation of typelist$<$\+Ts...$>$ \end{DoxyNote} If {\ttfamily Seq} == typelist$<$$>$ then Unpack typelist and apply to {\ttfamily Fn} It {\ttfamily Seq} == integer\+\_\+sequence$<$$>$ then Unpack and use the integral\+\_\+c$<$$>$ of each integer \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 197 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}\label{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}} \index{utl\+::meta@{utl\+::meta}!apply\+\_\+t@{apply\+\_\+t}} \index{apply\+\_\+t@{apply\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{apply\+\_\+t}{apply\_t}} {\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{utl\+::meta\+::apply\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$\mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$Fn, Seq$>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 200 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}\label{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}} \index{utl\+::meta@{utl\+::meta}!at@{at}} \index{at@{at}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{at}{at}} {\footnotesize\ttfamily template$<$typename List , typename N $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{utl\+::meta\+::at}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$List, N\+::type\+::value$>$} Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(N) $. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 253 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}\label{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}} \index{utl\+::meta@{utl\+::meta}!at\+\_\+c@{at\+\_\+c}} \index{at\+\_\+c@{at\+\_\+c}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{at\+\_\+c}{at\_c}} {\footnotesize\ttfamily template$<$typename List , index\+\_\+t N$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{utl\+::meta\+::at\+\_\+c}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{at\+\_\+impl\+::at\+\_\+}}$<$List, N$>$ $>$} Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(logN) $. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 245 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}\label{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}} \index{utl\+::meta@{utl\+::meta}!back@{back}} \index{back@{back}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{back}{back}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{utl\+::meta\+::back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{back\+\_\+impl\+::back\+\_\+}}$<$List$>$ $>$} Return the last element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(N) $. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 296 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}\label{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}} \index{utl\+::meta@{utl\+::meta}!bitand\+\_\+@{bitand\+\_\+}} \index{bitand\+\_\+@{bitand\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{bitand\+\_\+}{bitand\_}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{utl\+::meta\+::bitand\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() \& \+\_\+\+Tp2()), \+\_\+\+Tp1() \& \+\_\+\+Tp2()$>$} \begin{DoxyReturn}{Returns} bitwise and (\&) operation of its arguments \end{DoxyReturn} Definition at line 208 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}\label{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}} \index{utl\+::meta@{utl\+::meta}!bitnot\+\_\+@{bitnot\+\_\+}} \index{bitnot\+\_\+@{bitnot\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{bitnot\+\_\+}{bitnot\_}} {\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}{utl\+::meta\+::bitnot\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+T\+::value\+\_\+type, (typename \+\_\+\+T\+::value\+\_\+type)($\sim$\+\_\+T())$>$} Bitwise operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns} bitwise not ($\sim$) operation of its argument. \end{DoxyReturn} Definition at line 205 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}\label{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}} \index{utl\+::meta@{utl\+::meta}!bitor\+\_\+@{bitor\+\_\+}} \index{bitor\+\_\+@{bitor\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{bitor\+\_\+}{bitor\_}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}{utl\+::meta\+::bitor\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() $\vert$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $\vert$ \+\_\+\+Tp2()$>$} \begin{DoxyReturn}{Returns} bitwise or ($\vert$) operation of its arguments. \end{DoxyReturn} Definition at line 211 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}\label{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}} \index{utl\+::meta@{utl\+::meta}!bitxor\+\_\+@{bitxor\+\_\+}} \index{bitxor\+\_\+@{bitxor\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{bitxor\+\_\+}{bitxor\_}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}{utl\+::meta\+::bitxor\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()$>$} \begin{DoxyReturn}{Returns} bitwise xor ($^\wedge$) operation of its arguments. \end{DoxyReturn} Definition at line 215 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}\label{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}} \index{utl\+::meta@{utl\+::meta}!bool\+\_\+@{bool\+\_\+}} \index{bool\+\_\+@{bool\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{bool\+\_\+}{bool\_}} {\footnotesize\ttfamily template$<$bool v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{utl\+::meta\+::bool\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$bool, v$>$} bool\+\_\+ type\+: integral constant wrapper for bool Wrappers for basic types Definition at line 66 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}\label{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}} \index{utl\+::meta@{utl\+::meta}!cat@{cat}} \index{cat@{cat}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{cat}{cat}} {\footnotesize\ttfamily template$<$typename... Lists$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{utl\+::meta\+::cat}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{cat\+\_\+impl\+::cat\+\_\+}}$<$Lists...$>$ $>$} Transformation that concatenates several lists into a single typelist. The parameters must all be instantiations of {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}}. Complexity\+: $ O(N) $ where $ N $ is the number of lists passed to the algorithm. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 338 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}\label{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}} \index{utl\+::meta@{utl\+::meta}!char\+\_\+@{char\+\_\+}} \index{char\+\_\+@{char\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{char\+\_\+}{char\_}} {\footnotesize\ttfamily template$<$char v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{utl\+::meta\+::char\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$char, v$>$} char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} Definition at line 94 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}\label{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+eq@{comp\+\_\+eq}} \index{comp\+\_\+eq@{comp\+\_\+eq}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+eq}{comp\_eq}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{utl\+::meta\+::comp\+\_\+eq}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$\+\_\+\+Tp1() == \+\_\+\+Tp2()$>$} Comparison operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns} a true-\/valued Integral Constant if \+\_\+\+Tp1 and \+\_\+\+Tp2 are equal. \end{DoxyReturn} Definition at line 184 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}\label{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+ge@{comp\+\_\+ge}} \index{comp\+\_\+ge@{comp\+\_\+ge}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+ge}{comp\_ge}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}{utl\+::meta\+::comp\+\_\+ge}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$\+\_\+\+Tp1, \+\_\+\+Tp2$>$ $>$} Greater or equal. Definition at line 195 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}\label{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+gt@{comp\+\_\+gt}} \index{comp\+\_\+gt@{comp\+\_\+gt}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+gt}{comp\_gt}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{utl\+::meta\+::comp\+\_\+gt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} $<$\+\_\+\+Tp2, \+\_\+\+Tp1$>$} Greater than. Definition at line 191 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}\label{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+le@{comp\+\_\+le}} \index{comp\+\_\+le@{comp\+\_\+le}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+le}{comp\_le}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}{utl\+::meta\+::comp\+\_\+le}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$\+\_\+\+Tp2, \+\_\+\+Tp1$>$ $>$} Less or equal. Definition at line 193 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}\label{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+lt@{comp\+\_\+lt}} \index{comp\+\_\+lt@{comp\+\_\+lt}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+lt}{comp\_lt}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{utl\+::meta\+::comp\+\_\+lt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1() $<$ \+\_\+\+Tp2())$>$} \begin{DoxyReturn}{Returns} a true-\/valued Integral Constant if \+\_\+\+Tp1 is less than \+\_\+\+Tp2. \end{DoxyReturn} Definition at line 186 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}\label{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}} \index{utl\+::meta@{utl\+::meta}!comp\+\_\+ne@{comp\+\_\+ne}} \index{comp\+\_\+ne@{comp\+\_\+ne}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{comp\+\_\+ne}{comp\_ne}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}{utl\+::meta\+::comp\+\_\+ne}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}}$<$\+\_\+\+Tp1, \+\_\+\+Tp2$>$ $>$} Not equal. Definition at line 189 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}\label{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}} \index{utl\+::meta@{utl\+::meta}!compose@{compose}} \index{compose@{compose}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{compose}{compose}} {\footnotesize\ttfamily template$<$typename... Fns$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{utl\+::meta\+::compose}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$Fns...$>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 308 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}\label{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}} \index{utl\+::meta@{utl\+::meta}!compose\+\_\+f@{compose\+\_\+f}} \index{compose\+\_\+f@{compose\+\_\+f}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{compose\+\_\+f}{compose\_f}} {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class... Fns$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{utl\+::meta\+::compose\+\_\+f}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{detail\+::compose\+\_\+f\+\_\+}}$<$Fns...$>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 324 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}\label{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}} \index{utl\+::meta@{utl\+::meta}!count@{count}} \index{count@{count}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{count}{count}} {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{utl\+::meta\+::count}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}}$<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} Count all occurrences of type {\ttfamily T} int {\ttfamily List} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 761 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}\label{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}} \index{utl\+::meta@{utl\+::meta}!count\+\_\+if@{count\+\_\+if}} \index{count\+\_\+if@{count\+\_\+if}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{count\+\_\+if}{count\_if}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{utl\+::meta\+::count\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} Count all {\ttfamily Items} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} Complexity $ O(N) $ \begin{DoxyParams}{Parameters} {\em List} & A typelist \\ \hline {\em Pred} & A Unary invocable predicate \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The total count of occurrences as an integral constant of size\+\_\+t \end{DoxyReturn} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 755 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}\label{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}} \index{utl\+::meta@{utl\+::meta}!dec@{dec}} \index{dec@{dec}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{dec}{dec}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}{utl\+::meta\+::dec}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$-\/1$>$ $>$} decrease Definition at line 173 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}\label{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}} \index{utl\+::meta@{utl\+::meta}!defer@{defer}} \index{defer@{defer}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{defer}{defer}} {\footnotesize\ttfamily template$<$template$<$ class... $>$ class F, class... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{utl\+::meta\+::defer}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$F, Ts...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{detail\+::defer\+\_\+}}$<$F, Ts...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$} defer alias template for F$<$\+Ts...$>$ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 213 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}\label{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}} \index{utl\+::meta@{utl\+::meta}!defer\+\_\+i@{defer\+\_\+i}} \index{defer\+\_\+i@{defer\+\_\+i}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{defer\+\_\+i}{defer\_i}} {\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{utl\+::meta\+::defer\+\_\+i}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$T, F, Is...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{detail\+::defer\+\_\+i\+\_\+}}$<$T, F, Is...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$} defer\+\_\+i alias template for F$<$\+T, Is...$>$ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 221 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}\label{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}} \index{utl\+::meta@{utl\+::meta}!detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}} \index{detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{detected\+\_\+or\+\_\+t}{detected\_or\_t}} {\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{utl\+::meta\+::detected\+\_\+or\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detail\+::detected\+\_\+or}}$<$Default, Op, Args...$>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 172 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}\label{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}} \index{utl\+::meta@{utl\+::meta}!detected\+\_\+t@{detected\+\_\+t}} \index{detected\+\_\+t@{detected\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{detected\+\_\+t}{detected\_t}} {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{utl\+::meta\+::detected\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args...$>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 146 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}\label{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}} \index{utl\+::meta@{utl\+::meta}!divide@{divide}} \index{divide@{divide}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{divide}{divide}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{utl\+::meta\+::divide}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() / \+\_\+\+Tp2()), \+\_\+\+Tp1() / \+\_\+\+Tp2() $>$} Division. Definition at line 156 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}\label{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}} \index{utl\+::meta@{utl\+::meta}!empty@{empty}} \index{empty@{empty}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{empty}{empty}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{utl\+::meta\+::empty}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$List\+::empty()$>$} An Boolean constant wrapper that returns if the typelist is empty Complexity $ O(1) $. \begin{DoxyParams}{Parameters} {\em List} & A typelist \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Empty or not \end{DoxyReturn} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 140 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}\label{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}} \index{utl\+::meta@{utl\+::meta}!enable\+\_\+if@{enable\+\_\+if}} \index{enable\+\_\+if@{enable\+\_\+if}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{enable\+\_\+if}{enable\_if}} {\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{utl\+::meta\+::enable\+\_\+if}} = typedef std\+::enable\+\_\+if$<$If, \+\_\+\+Tp$>$} enable\+\_\+if, imported from stl enable\+\_\+if Definition at line 60 of file sfinae.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}\label{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}} \index{utl\+::meta@{utl\+::meta}!enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}} \index{enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{enable\+\_\+if\+\_\+t}{enable\_if\_t}} {\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{utl\+::meta\+::enable\+\_\+if\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}}$<$If, \+\_\+\+Tp$>$ $>$} alias template for enable\+\_\+if Definition at line 63 of file sfinae.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}\label{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}} \index{utl\+::meta@{utl\+::meta}!eval@{eval}} \index{eval@{eval}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{eval}{eval}} {\footnotesize\ttfamily template$<$typename Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{utl\+::meta\+::eval}} = typedef typename Tp\+::type} Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 49 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}\label{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}} \index{utl\+::meta@{utl\+::meta}!false\+\_\+@{false\+\_\+}} \index{false\+\_\+@{false\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{false\+\_\+}{false\_}} {\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{utl\+::meta\+::false\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$false$>$} The type used as a compile-\/time boolean with false value. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 69 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}\label{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}} \index{utl\+::meta@{utl\+::meta}!filter@{filter}} \index{filter@{filter}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{filter}{filter}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{utl\+::meta\+::filter}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+impl\+::filter\+\_\+}}$<$List, Pred, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$} Return a new typelist with elements, the elements of {\ttfamily List} that satisfy the invocable {\ttfamily Pred} such that {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} is {\ttfamily true\+\_\+} Complexity $ O(N) $ \begin{DoxyParams}{Parameters} {\em List} & The input typelist \\ \hline {\em Pred} & A unary invocable predicate \\ \hline \end{DoxyParams} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 800 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}\label{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}} \index{utl\+::meta@{utl\+::meta}!find@{find}} \index{find@{find}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{find}{find}} {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{utl\+::meta\+::find}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}}$<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} Search for the first occurrence of type {\ttfamily T} on a {\ttfamily List} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 663 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}\label{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}} \index{utl\+::meta@{utl\+::meta}!find\+\_\+if@{find\+\_\+if}} \index{find\+\_\+if@{find\+\_\+if}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{find\+\_\+if}{find\_if}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{utl\+::meta\+::find\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} Search for the first {\ttfamily Item} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} Complexity $ O(N) $ \begin{DoxyParams}{Parameters} {\em List} & A typelist \\ \hline {\em Pred} & A Unary invocable predicate \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} An integral constant of index\+\_\+t with the location of the first match, or Npos otherwise. \end{DoxyReturn} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 657 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}\label{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}} \index{utl\+::meta@{utl\+::meta}!fold@{fold}} \index{fold@{fold}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{fold}{fold}} {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{utl\+::meta\+::fold}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+impl\+::fold\+\_\+}}$<$List, V, Fn$>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 383 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}\label{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}} \index{utl\+::meta@{utl\+::meta}!front@{front}} \index{front@{front}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{front}{front}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{utl\+::meta\+::front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{front\+\_\+impl\+::front\+\_\+}}$<$List$>$ $>$} Return the first element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(1) $. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 274 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}\label{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}} \index{utl\+::meta@{utl\+::meta}!identity\+\_\+t@{identity\+\_\+t}} \index{identity\+\_\+t@{identity\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{identity\+\_\+t}{identity\_t}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{utl\+::meta\+::identity\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}}$<$\+\_\+\+Tp$>$ $>$} identity type alias \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 68 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}\label{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}} \index{utl\+::meta@{utl\+::meta}!inc@{inc}} \index{inc@{inc}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{inc}{inc}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}{utl\+::meta\+::inc}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$1$>$ $>$} Increase. Definition at line 169 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}\label{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}} \index{utl\+::meta@{utl\+::meta}!index\+\_\+@{index\+\_\+}} \index{index\+\_\+@{index\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{index\+\_\+}{index\_}} {\footnotesize\ttfamily template$<$index\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{utl\+::meta\+::index\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, v$>$} index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t Definition at line 106 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}\label{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}} \index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence@{index\+\_\+sequence}} \index{index\+\_\+sequence@{index\+\_\+sequence}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{index\+\_\+sequence}{index\_sequence}} {\footnotesize\ttfamily template$<$index\+\_\+t... Idx$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}{utl\+::meta\+::index\+\_\+sequence}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Idx...$>$} Alias template index\+\_\+sequence. Definition at line 136 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}\label{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}} \index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}} \index{index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{index\+\_\+sequence\+\_\+for}{index\_sequence\_for}} {\footnotesize\ttfamily template$<$typename... Types$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{utl\+::meta\+::index\+\_\+sequence\+\_\+for}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}}$<$sizeof...(Types)$>$} Alias template index\+\_\+sequence\+\_\+for. Definition at line 144 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}\label{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}} \index{utl\+::meta@{utl\+::meta}!int16\+\_\+@{int16\+\_\+}} \index{int16\+\_\+@{int16\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{int16\+\_\+}{int16\_}} {\footnotesize\ttfamily template$<$int16\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{utl\+::meta\+::int16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int16\+\_\+t, v$>$} int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} Definition at line 80 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}\label{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}} \index{utl\+::meta@{utl\+::meta}!int32\+\_\+@{int32\+\_\+}} \index{int32\+\_\+@{int32\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{int32\+\_\+}{int32\_}} {\footnotesize\ttfamily template$<$int32\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{utl\+::meta\+::int32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int32\+\_\+t, v$>$} int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} Definition at line 87 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}\label{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}} \index{utl\+::meta@{utl\+::meta}!int8\+\_\+@{int8\+\_\+}} \index{int8\+\_\+@{int8\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{int8\+\_\+}{int8\_}} {\footnotesize\ttfamily template$<$int8\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{utl\+::meta\+::int8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int8\+\_\+t, v$>$} int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} Definition at line 73 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}\label{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}} \index{utl\+::meta@{utl\+::meta}!int\+\_\+@{int\+\_\+}} \index{int\+\_\+@{int\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{int\+\_\+}{int\_}} {\footnotesize\ttfamily template$<$int v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{utl\+::meta\+::int\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int, v$>$} int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} Definition at line 98 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}\label{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}} \index{utl\+::meta@{utl\+::meta}!integer\+\_\+sequence@{integer\+\_\+sequence}} \index{integer\+\_\+sequence@{integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{integer\+\_\+sequence}{integer\_sequence}} {\footnotesize\ttfamily template$<$class Tp , Tp... Ints$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{utl\+::meta\+::integer\+\_\+sequence}} = typedef std\+::integer\+\_\+sequence$<$Tp, Ints...$>$} integer sequence \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 129 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}\label{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}} \index{utl\+::meta@{utl\+::meta}!integral\+\_\+@{integral\+\_\+}} \index{integral\+\_\+@{integral\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{integral\+\_\+}{integral\_}} {\footnotesize\ttfamily template$<$typename Tp , Tp v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{utl\+::meta\+::integral\+\_\+}} = typedef std\+::integral\+\_\+constant$<$Tp, v$>$} integral\+\_\+ Integral Constant is a holder class for a compile-\/time value of an integral type. Every Integral Constant is also a null-\/ary Metafunction, returning itself. An integral constant object is implicitly convertible to the corresponding run-\/time value of the wrapped integral type Definition at line 58 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}\label{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}} \index{utl\+::meta@{utl\+::meta}!invoke@{invoke}} \index{invoke@{invoke}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{invoke}{invoke}} {\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{utl\+::meta\+::invoke}} = typedef typename Fn\+::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$Args...$>$} invoke, invoke\+\_\+t Invoke the nested apply meta-\/function from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{DoxyNote}{Note} This is an analogous to the \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{std\+::invoke()}} \end{DoxyNote} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 81 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}\label{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}} \index{utl\+::meta@{utl\+::meta}!invoke\+\_\+t@{invoke\+\_\+t}} \index{invoke\+\_\+t@{invoke\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{invoke\+\_\+t}{invoke\_t}} {\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{utl\+::meta\+::invoke\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} $<$Fn, Args...$>$ $>$} Evaluate the invocation of the nested apply metafunction from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 88 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}\label{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}} \index{is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+it}{is\_applicable\_it}} {\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{utl\+::meta\+::is\+\_\+applicable\+\_\+it}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$T, F, Is...$>$ $>$} check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 174 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}\label{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}} \index{is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+qt}{is\_applicable\_qt}} {\footnotesize\ttfamily template$<$typename Q , typename... T$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{utl\+::meta\+::is\+\_\+applicable\+\_\+qt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{detail\+::is\+\_\+applicable\+\_\+q\+\_\+}} $<$Q, T...$>$ $>$} check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 168 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}\label{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}} \index{is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+t}{is\_applicable\_t}} {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{utl\+::meta\+::is\+\_\+applicable\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$F, T...$>$ $>$} check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 163 of file invoke.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}\label{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected@{is\+\_\+detected}} \index{is\+\_\+detected@{is\+\_\+detected}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected}{is\_detected}} {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{utl\+::meta\+::is\+\_\+detected}} = typedef typename \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args...$>$\+::detected} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 118 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}\label{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}} \index{is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible}{is\_detected\_convertible}} {\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{utl\+::meta\+::is\+\_\+detected\+\_\+convertible}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ std\+::is\+\_\+convertible$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$Op, Args...$>$, To $>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 231 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}\label{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}} \index{is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact}{is\_detected\_exact}} {\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{utl\+::meta\+::is\+\_\+detected\+\_\+exact}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$Expected, \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$Op, Args...$>$ $>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 199 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}\label{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}} \index{utl\+::meta@{utl\+::meta}!long\+\_\+@{long\+\_\+}} \index{long\+\_\+@{long\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{long\+\_\+}{long\_}} {\footnotesize\ttfamily template$<$long v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{utl\+::meta\+::long\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$long, v$>$} long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} Definition at line 102 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}\label{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}} \index{utl\+::meta@{utl\+::meta}!make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}} \index{make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{make\+\_\+index\+\_\+sequence}{make\_index\_sequence}} {\footnotesize\ttfamily template$<$index\+\_\+t Num$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{utl\+::meta\+::make\+\_\+index\+\_\+sequence}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}} $<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Num$>$} Alias template make\+\_\+index\+\_\+sequence. Definition at line 140 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}\label{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}} \index{utl\+::meta@{utl\+::meta}!make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}} \index{make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{make\+\_\+integer\+\_\+sequence}{make\_integer\_sequence}} {\footnotesize\ttfamily template$<$typename Tp , Tp Num$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{utl\+::meta\+::make\+\_\+integer\+\_\+sequence}} = typedef std\+::make\+\_\+integer\+\_\+sequence$<$Tp, Num$>$} Definition at line 132 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}\label{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}} \index{utl\+::meta@{utl\+::meta}!modulo@{modulo}} \index{modulo@{modulo}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{modulo}{modulo}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{utl\+::meta\+::modulo}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$} Modulo. Definition at line 162 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}\label{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}} \index{utl\+::meta@{utl\+::meta}!mult@{mult}} \index{mult@{mult}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{mult}{mult}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}{utl\+::meta\+::mult}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() $\ast$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $\ast$ \+\_\+\+Tp2() $>$} Multiplication. Definition at line 150 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}\label{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}} \index{utl\+::meta@{utl\+::meta}!negate@{negate}} \index{negate@{negate}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{negate}{negate}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{utl\+::meta\+::negate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$} Negation. Math operations requires Integral\+Constant(\+\_\+\+Tp) Definition at line 138 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}\label{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}} \index{utl\+::meta@{utl\+::meta}!none\+\_\+of@{none\+\_\+of}} \index{none\+\_\+of@{none\+\_\+of}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{none\+\_\+of}{none\_of}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{utl\+::meta\+::none\+\_\+of}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, Pred$>$ $>$} Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily false\+\_\+} for all the elements in the {\ttfamily List} or if the {\ttfamily List} is empty and {\ttfamily false} otherwise. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 875 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}\label{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}} \index{utl\+::meta@{utl\+::meta}!Npos@{Npos}} \index{Npos@{Npos}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{Npos}{Npos}} {\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{utl\+::meta\+::\+Npos}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}(-\/1)$>$} The last position we can express for indexing. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 124 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}\label{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}} \index{utl\+::meta@{utl\+::meta}!pair@{pair}} \index{pair@{pair}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{pair}{pair}} {\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{utl\+::meta\+::pair}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$T1, T2$>$} pair A special typelist with only 2 Types \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 145 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}\label{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}} \index{utl\+::meta@{utl\+::meta}!pop\+\_\+back@{pop\+\_\+back}} \index{pop\+\_\+back@{pop\+\_\+back}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{pop\+\_\+back}{pop\_back}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{utl\+::meta\+::pop\+\_\+back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}}$<$List$>$ $>$} Return a new {\ttfamily typelist} by removing the last element from the {\ttfamily List}. Complexity $ O(N) $. \begin{DoxyNote}{Note} This operation, in addition from other push/pop operations, is heavy(2 reverse operations). \end{DoxyNote} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 526 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}\label{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}} \index{utl\+::meta@{utl\+::meta}!pop\+\_\+front@{pop\+\_\+front}} \index{pop\+\_\+front@{pop\+\_\+front}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{pop\+\_\+front}{pop\_front}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{utl\+::meta\+::pop\+\_\+front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+}}$<$List$>$ $>$} Return a new {\ttfamily typelist} by removing the first element from the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 502 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}\label{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}} \index{utl\+::meta@{utl\+::meta}!push\+\_\+back@{push\+\_\+back}} \index{push\+\_\+back@{push\+\_\+back}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{push\+\_\+back}{push\_back}} {\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{utl\+::meta\+::push\+\_\+back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$>$, Ts...$>$, List $>$ $>$} Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the back of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 461 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}\label{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}} \index{utl\+::meta@{utl\+::meta}!push\+\_\+front@{push\+\_\+front}} \index{push\+\_\+front@{push\+\_\+front}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{push\+\_\+front}{push\_front}} {\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{utl\+::meta\+::push\+\_\+front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$>$, Ts...$>$, List $>$ $>$} Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 450 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}\label{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}} \index{utl\+::meta@{utl\+::meta}!repeat@{repeat}} \index{repeat@{repeat}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{repeat}{repeat}} {\footnotesize\ttfamily template$<$typename N , typename ... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{utl\+::meta\+::repeat}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}}$<$N\+::type\+::value, Ts...$>$} A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integral\+\_\+c argument {\ttfamily N} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 161 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}\label{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}} \index{utl\+::meta@{utl\+::meta}!repeat\+\_\+c@{repeat\+\_\+c}} \index{repeat\+\_\+c@{repeat\+\_\+c}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{repeat\+\_\+c}{repeat\_c}} {\footnotesize\ttfamily template$<$size\+\_\+t N, typename ... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{utl\+::meta\+::repeat\+\_\+c}} = typedef typename \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Ts...$>$\+::template times$<$N$>$} repeat A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integer argument {\ttfamily N} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 155 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}\label{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}} \index{utl\+::meta@{utl\+::meta}!replace@{replace}} \index{replace@{replace}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{replace}{replace}} {\footnotesize\ttfamily template$<$typename List , typename T , typename U $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{utl\+::meta\+::replace}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}} $<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$, U$>$ $>$} Alias wrapper that returns a new {\ttfamily typelist} where all instances of type {\ttfamily T} have been replaced with {\ttfamily U}. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 848 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}\label{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}} \index{utl\+::meta@{utl\+::meta}!replace\+\_\+if@{replace\+\_\+if}} \index{replace\+\_\+if@{replace\+\_\+if}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{replace\+\_\+if}{replace\_if}} {\footnotesize\ttfamily template$<$typename List , typename Pred , typename T $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{utl\+::meta\+::replace\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$List, Pred, T, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$} Return a new typelist where all the instances for which the invocation of{\ttfamily Pred} returns {\ttfamily true\+\_\+}, are replaced with {\ttfamily T} Complexity $ O(N) $ \begin{DoxyParams}{Parameters} {\em List} & The input typelist \\ \hline {\em Pred} & A unary invocable predicate \\ \hline {\em T} & The new type to replace the item of the {\ttfamily List}, when eval$<$invoke$<$\+Pred, Item$>$$>$ returns {\ttfamily true\+\_\+} \\ \hline \end{DoxyParams} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 841 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}\label{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}} \index{utl\+::meta@{utl\+::meta}!rev\+\_\+fold@{rev\+\_\+fold}} \index{rev\+\_\+fold@{rev\+\_\+fold}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{rev\+\_\+fold}{rev\_fold}} {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{utl\+::meta\+::rev\+\_\+fold}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$List, V, Fn$>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 438 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}\label{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}} \index{utl\+::meta@{utl\+::meta}!reverse@{reverse}} \index{reverse@{reverse}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{reverse}{reverse}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{utl\+::meta\+::reverse}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{reverse\+\_\+impl\+::reverse\+\_\+}}$<$List$>$ $>$} Return a new {\ttfamily typelist} by reversing the elements in the list {\ttfamily List}. Complexity $ O(N) $ \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 479 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}\label{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}} \index{utl\+::meta@{utl\+::meta}!seek@{seek}} \index{seek@{seek}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{seek}{seek}} {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{utl\+::meta\+::seek}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}} $<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} Search for the first {\ttfamily Item} on the {\ttfamily List} of type {\ttfamily T} and return the rest of the {\ttfamily List} starting from that position as new typelist \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 711 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}\label{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}} \index{utl\+::meta@{utl\+::meta}!seek\+\_\+if@{seek\+\_\+if}} \index{seek\+\_\+if@{seek\+\_\+if}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{seek\+\_\+if}{seek\_if}} {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{utl\+::meta\+::seek\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} Search for the first {\ttfamily Item} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} and return the rest of the {\ttfamily List} starting from that position as new typelist Complexity $ O(N) $ \begin{DoxyParams}{Parameters} {\em List} & A typelist \\ \hline {\em Pred} & A Unary invocable predicate \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} An integral constant with the location of the first match, on Npos otherwise \end{DoxyReturn} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 705 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}\label{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}} \index{utl\+::meta@{utl\+::meta}!shift\+\_\+left@{shift\+\_\+left}} \index{shift\+\_\+left@{shift\+\_\+left}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{shift\+\_\+left}{shift\_left}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}{utl\+::meta\+::shift\+\_\+left}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+Tp\+::value\+\_\+type, (typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $<$$<$ shift())$>$} \begin{DoxyReturn}{Returns} the result of bitwise shift left ($<$$<$) operation on \+\_\+\+Tp. \end{DoxyReturn} Definition at line 218 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}\label{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}} \index{utl\+::meta@{utl\+::meta}!shift\+\_\+right@{shift\+\_\+right}} \index{shift\+\_\+right@{shift\+\_\+right}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{shift\+\_\+right}{shift\_right}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}{utl\+::meta\+::shift\+\_\+right}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+Tp\+::value\+\_\+type, (typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $>$ $>$ shift())$>$} \begin{DoxyReturn}{Returns} the result of bitwise shift right ($>$$>$) operation on \+\_\+\+Tp. \end{DoxyReturn} Definition at line 221 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}\label{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}} \index{utl\+::meta@{utl\+::meta}!size@{size}} \index{size@{size}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{size}{size}} {\footnotesize\ttfamily template$<$typename List $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{utl\+::meta\+::size}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$List\+::size()$>$} An integral constant wrapper that is the size of the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} Complexity $ O(1) $. \begin{DoxyParams}{Parameters} {\em List} & A typelist \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The size of the typelist \end{DoxyReturn} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 129 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}\label{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}} \index{utl\+::meta@{utl\+::meta}!size\+\_\+@{size\+\_\+}} \index{size\+\_\+@{size\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{size\+\_\+}{size\_}} {\footnotesize\ttfamily template$<$size\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{utl\+::meta\+::size\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}, v$>$} size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t Definition at line 110 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}\label{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}} \index{utl\+::meta@{utl\+::meta}!sizeof\+\_\+@{sizeof\+\_\+}} \index{sizeof\+\_\+@{sizeof\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{sizeof\+\_\+}{sizeof\_}} {\footnotesize\ttfamily template$<$typename Tp $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{utl\+::meta\+::sizeof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$sizeof(Tp)$>$} Computes the size of the type {\ttfamily Tp}. Complexity $ O(1) $. Definition at line 115 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}\label{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}} \index{utl\+::meta@{utl\+::meta}!sub@{sub}} \index{sub@{sub}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{sub}{sub}} {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}{utl\+::meta\+::sub}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp1, \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}}$<$\+\_\+\+Tp2$>$ $>$} Substruction. Definition at line 165 of file operations.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}\label{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}} \index{utl\+::meta@{utl\+::meta}!transform@{transform}} \index{transform@{transform}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{transform}{transform}} {\footnotesize\ttfamily template$<$typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{utl\+::meta\+::transform}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{transform\+\_\+impl\+::transform\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Args...$>$ $>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 568 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}\label{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}} \index{utl\+::meta@{utl\+::meta}!transform\+\_\+lazy@{transform\+\_\+lazy}} \index{transform\+\_\+lazy@{transform\+\_\+lazy}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{transform\+\_\+lazy}{transform\_lazy}} {\footnotesize\ttfamily template$<$typename... Args$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{utl\+::meta\+::transform\+\_\+lazy}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Args...$>$ $>$ $>$} \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} Definition at line 614 of file typelist.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}\label{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}} \index{utl\+::meta@{utl\+::meta}!true\+\_\+@{true\+\_\+}} \index{true\+\_\+@{true\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{true\+\_\+}{true\_}} {\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{utl\+::meta\+::true\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$true$>$} The type used as a compile-\/time boolean with true value. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} Definition at line 68 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}\label{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}} \index{utl\+::meta@{utl\+::meta}!uint16\+\_\+@{uint16\+\_\+}} \index{uint16\+\_\+@{uint16\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{uint16\+\_\+}{uint16\_}} {\footnotesize\ttfamily template$<$uint16\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{utl\+::meta\+::uint16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint16\+\_\+t, v$>$} uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} Definition at line 83 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}\label{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}} \index{utl\+::meta@{utl\+::meta}!uint32\+\_\+@{uint32\+\_\+}} \index{uint32\+\_\+@{uint32\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{uint32\+\_\+}{uint32\_}} {\footnotesize\ttfamily template$<$uint32\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{utl\+::meta\+::uint32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint32\+\_\+t, v$>$} uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} Definition at line 90 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}\label{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}} \index{utl\+::meta@{utl\+::meta}!uint8\+\_\+@{uint8\+\_\+}} \index{uint8\+\_\+@{uint8\+\_\+}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{uint8\+\_\+}{uint8\_}} {\footnotesize\ttfamily template$<$uint8\+\_\+t v$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{utl\+::meta\+::uint8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint8\+\_\+t, v$>$} uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} Definition at line 76 of file integral.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}\label{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}} \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}} \index{use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+all\+\_\+t}{use\_if\_all\_t}} {\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}{utl\+::meta\+::use\+\_\+if\+\_\+all\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}}$<$T1, Ts...$>$\+::value, T1 $>$} If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. Definition at line 56 of file useif.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}\label{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}} \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}} \index{use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+any\+\_\+t}{use\_if\_any\_t}} {\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}{utl\+::meta\+::use\+\_\+if\+\_\+any\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}}$<$T1, Ts...$>$\+::value, T1 $>$} If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. Definition at line 50 of file useif.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}\label{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}} \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} \index{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}{use\_if\_not\_same\_t}} {\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}{utl\+::meta\+::use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ !\mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$\+::value, \+\_\+\+Ret $>$} If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. Definition at line 45 of file useif.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}\label{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}} \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}} \index{use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+same\+\_\+t}{use\_if\_same\_t}} {\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{utl\+::meta\+::use\+\_\+if\+\_\+same\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$\+::value, \+\_\+\+Ret $>$} If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. Definition at line 40 of file useif.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}\label{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}} \index{utl\+::meta@{utl\+::meta}!when@{when}} \index{when@{when}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{when}{when}} {\footnotesize\ttfamily template$<$bool If$>$ \\ using \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{utl\+::meta\+::when}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{detail\+::when\+\_\+}}$<$If$>$ $>$} Well formed only if {\ttfamily If} is true. Definition at line 46 of file sfinae.\+h. \subsection{Variable Documentation} \mbox{\Hypertarget{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}\label{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}} \index{is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible\+\_\+v}{is\_detected\_convertible\_v}} {\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\ constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+convertible\+\_\+v} {\bfseries Initial value\+:} \begin{DoxyCode} = \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\_detected\_convertible}}::value \end{DoxyCode} evaluates to true if evaluation of Op$<$\+Args...$>$ is convertible to {\ttfamily To} and to false if not \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 237 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}\label{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}} \index{is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact\+\_\+v}{is\_detected\_exact\_v}} {\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\ constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+exact\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}}$<$ Expected, Op, Args...$>$\+::value} evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 204 of file detection.\+h. \mbox{\Hypertarget{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}\label{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}} \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}} \index{is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}!utl\+::meta@{utl\+::meta}} \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+v}{is\_detected\_v}} {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}}$<$Op, Args...$>$\+::value} Detection predicate. \begin{Desc} \item[Examples\+: ]\par \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} Definition at line 122 of file detection.\+h.