\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}}<To, Op, Args...>::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.

