Micro template library A library for building device drivers
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

2084 lignes
148 KiB

  1. \hypertarget{namespaceutl_1_1meta}{}\section{utl\+:\+:meta Namespace Reference}
  2. \label{namespaceutl_1_1meta}\index{utl\+::meta@{utl\+::meta}}
  3. \subsection*{Namespaces}
  4. \begin{DoxyCompactItemize}
  5. \item
  6. \mbox{\hyperlink{namespaceutl_1_1meta_1_1apply__impl}{apply\+\_\+impl}}
  7. \item
  8. \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl}{at\+\_\+impl}}
  9. \item
  10. \mbox{\hyperlink{namespaceutl_1_1meta_1_1back__impl}{back\+\_\+impl}}
  11. \item
  12. \mbox{\hyperlink{namespaceutl_1_1meta_1_1cat__impl}{cat\+\_\+impl}}
  13. \item
  14. \mbox{\hyperlink{namespaceutl_1_1meta_1_1count__if__impl}{count\+\_\+if\+\_\+impl}}
  15. \item
  16. \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{detail}}
  17. \item
  18. \mbox{\hyperlink{namespaceutl_1_1meta_1_1filter__impl}{filter\+\_\+impl}}
  19. \item
  20. \mbox{\hyperlink{namespaceutl_1_1meta_1_1find__if__impl}{find\+\_\+if\+\_\+impl}}
  21. \item
  22. \mbox{\hyperlink{namespaceutl_1_1meta_1_1fold__impl}{fold\+\_\+impl}}
  23. \item
  24. \mbox{\hyperlink{namespaceutl_1_1meta_1_1front__impl}{front\+\_\+impl}}
  25. \item
  26. \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__back__impl}{pop\+\_\+back\+\_\+impl}}
  27. \item
  28. \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__front__impl}{pop\+\_\+front\+\_\+impl}}
  29. \item
  30. \mbox{\hyperlink{namespaceutl_1_1meta_1_1replace__if__impl}{replace\+\_\+if\+\_\+impl}}
  31. \item
  32. \mbox{\hyperlink{namespaceutl_1_1meta_1_1rev__fold__impl}{rev\+\_\+fold\+\_\+impl}}
  33. \item
  34. \mbox{\hyperlink{namespaceutl_1_1meta_1_1reverse__impl}{reverse\+\_\+impl}}
  35. \item
  36. \mbox{\hyperlink{namespaceutl_1_1meta_1_1seek__if__impl}{seek\+\_\+if\+\_\+impl}}
  37. \item
  38. \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__impl}{transform\+\_\+impl}}
  39. \item
  40. \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__lazy__impl}{transform\+\_\+lazy\+\_\+impl}}
  41. \end{DoxyCompactItemize}
  42. \subsection*{Classes}
  43. \begin{DoxyCompactItemize}
  44. \item
  45. struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}}
  46. \item
  47. struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}}
  48. \item
  49. struct \mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}}
  50. \item
  51. struct \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}
  52. \item
  53. struct \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}
  54. \item
  55. struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as}{not\+\_\+same\+\_\+as}}
  56. \item
  57. struct \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}
  58. \item
  59. struct \mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{quote\+\_\+i}}
  60. \begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\item
  61. struct \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}
  62. \item
  63. struct \mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}}
  64. \item
  65. struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}
  66. \item
  67. struct \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}
  68. \item
  69. struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap}{wrap}}
  70. \item
  71. struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{wrap\+\_\+i}}
  72. \begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\end{DoxyCompactItemize}
  73. \subsection*{Typedefs}
  74. \begin{DoxyCompactItemize}
  75. \item
  76. {\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\+\_\+}} = void
  77. \begin{DoxyCompactList}\small\item\em void\+\_\+ type alias \end{DoxyCompactList}\item
  78. {\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}} = void
  79. \begin{DoxyCompactList}\small\item\em void\+\_\+t type alias \end{DoxyCompactList}\item
  80. {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} = typename Tp\+::type
  81. \begin{DoxyCompactList}\small\item\em Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. \end{DoxyCompactList}\item
  82. using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}(-\/1)$>$
  83. \begin{DoxyCompactList}\small\item\em The last position we can express for indexing. \end{DoxyCompactList}\item
  84. {\footnotesize template$<$bool B$>$ }\\using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$!B $>$
  85. \begin{DoxyCompactList}\small\item\em Negate the {\itshape bool} constant parameter. \end{DoxyCompactList}\item
  86. {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}} = \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}}$<$ \+\_\+\+Tp\+::type\+::value $>$
  87. \begin{DoxyCompactList}\small\item\em not \end{DoxyCompactList}\item
  88. {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{size}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ List\+::size()$>$
  89. \item
  90. {\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ List\+::empty()$>$
  91. \item
  92. {\footnotesize template$<$typename T1 , typename T2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{pair}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ T1, T2 $>$
  93. \item
  94. {\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 $>$ $>$
  95. \item
  96. {\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 $>$ $>$
  97. \item
  98. {\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 $>$ $>$ $>$ $>$
  99. \item
  100. {\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 $>$ $>$ $>$
  101. \item
  102. {\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 $>$ $>$
  103. \item
  104. {\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 $>$
  105. \begin{DoxyCompactList}\small\item\em If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item
  106. {\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 $>$
  107. \begin{DoxyCompactList}\small\item\em If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item
  108. {\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 $>$
  109. \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
  110. {\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 $>$
  111. \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}
  112. \textbf{ }\par
  113. \begin{DoxyCompactItemize}
  114. \item
  115. {\footnotesize template$<$typename Tp , Tp v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}} = std\+::integral\+\_\+constant$<$ Tp, v $>$
  116. \end{DoxyCompactItemize}
  117. \textbf{ }\par
  118. \begin{DoxyCompactItemize}
  119. \item
  120. {\footnotesize template$<$bool v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ bool, v $>$
  121. \begin{DoxyCompactList}\small\item\em bool\+\_\+ type\+: integral constant wrapper for bool \end{DoxyCompactList}\item
  122. using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ true $>$
  123. \begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with true value. \end{DoxyCompactList}\item
  124. using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ false $>$
  125. \begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with false value. \end{DoxyCompactList}\item
  126. {\footnotesize template$<$int8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{int8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int8\+\_\+t, v $>$
  127. \begin{DoxyCompactList}\small\item\em int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} \end{DoxyCompactList}\item
  128. {\footnotesize template$<$uint8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{uint8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint8\+\_\+t, v $>$
  129. \begin{DoxyCompactList}\small\item\em uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} \end{DoxyCompactList}\item
  130. {\footnotesize template$<$int16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{int16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int16\+\_\+t, v $>$
  131. \begin{DoxyCompactList}\small\item\em int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} \end{DoxyCompactList}\item
  132. {\footnotesize template$<$uint16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{uint16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint16\+\_\+t, v $>$
  133. \begin{DoxyCompactList}\small\item\em uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} \end{DoxyCompactList}\item
  134. {\footnotesize template$<$int32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{int32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int32\+\_\+t, v $>$
  135. \begin{DoxyCompactList}\small\item\em int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} \end{DoxyCompactList}\item
  136. {\footnotesize template$<$uint32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{uint32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint32\+\_\+t, v $>$
  137. \begin{DoxyCompactList}\small\item\em uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} \end{DoxyCompactList}\item
  138. {\footnotesize template$<$char v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{char\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ char, v $>$
  139. \begin{DoxyCompactList}\small\item\em char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} \end{DoxyCompactList}\item
  140. {\footnotesize template$<$int v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int, v $>$
  141. \begin{DoxyCompactList}\small\item\em int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} \end{DoxyCompactList}\item
  142. {\footnotesize template$<$long v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{long\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ long, v $>$
  143. \begin{DoxyCompactList}\small\item\em long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} \end{DoxyCompactList}\item
  144. {\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 $>$
  145. \begin{DoxyCompactList}\small\item\em index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item
  146. {\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 $>$
  147. \begin{DoxyCompactList}\small\item\em size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item
  148. {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{sizeof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ sizeof(Tp)$>$
  149. \item
  150. {\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{alignof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ alignof(Tp)$>$
  151. \end{DoxyCompactItemize}
  152. \textbf{ }\par
  153. \begin{DoxyCompactItemize}
  154. \item
  155. {\footnotesize template$<$class Tp , Tp... Ints$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}} = std\+::integer\+\_\+sequence$<$ Tp, Ints... $>$
  156. \item
  157. {\footnotesize template$<$typename Tp , Tp Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}} = std\+::make\+\_\+integer\+\_\+sequence$<$ Tp, Num $>$
  158. \item
  159. {\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... $>$
  160. \begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence. \end{DoxyCompactList}\item
  161. {\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 $>$
  162. \begin{DoxyCompactList}\small\item\em Alias template make\+\_\+index\+\_\+sequence. \end{DoxyCompactList}\item
  163. {\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)$>$
  164. \begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence\+\_\+for. \end{DoxyCompactList}\end{DoxyCompactItemize}
  165. \begin{Indent}\textbf{ meta\+:\+:invoke}\par
  166. {\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.
  167. \begin{DoxyItemize}
  168. \item We can use {\ttfamily wrap$<$$>$} or even better {\ttfamily quote$<$$>$} in order to wrap a metafunction to a type (metafunction class)
  169. \item We can pass these wrapped types to other metafunctions
  170. \item We can {\ttfamily invoke$<$$>$} the inner {\ttfamily apply} from a wrapped metafunction class.
  171. \end{DoxyItemize}}\begin{DoxyCompactItemize}
  172. \item
  173. {\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 $>$ $>$
  174. \begin{DoxyCompactList}\small\item\em identity type alias \end{DoxyCompactList}\end{DoxyCompactItemize}
  175. \end{Indent}
  176. \textbf{ }\par
  177. \begin{DoxyCompactItemize}
  178. \item
  179. {\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... $>$
  180. \item
  181. {\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... $>$ $>$
  182. \end{DoxyCompactItemize}
  183. \textbf{ }\par
  184. \begin{DoxyCompactItemize}
  185. \item
  186. {\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... $>$ $>$
  187. \begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} \end{DoxyCompactList}\item
  188. {\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... $>$ $>$
  189. \begin{DoxyCompactList}\small\item\em check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} \end{DoxyCompactList}\item
  190. {\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... $>$ $>$
  191. \begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} \end{DoxyCompactList}\end{DoxyCompactItemize}
  192. \textbf{ }\par
  193. \begin{DoxyCompactItemize}
  194. \item
  195. {\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\+\_\+}} $>$
  196. \begin{DoxyCompactList}\small\item\em defer alias template for F$<$\+Ts...$>$ \end{DoxyCompactList}\item
  197. {\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\+\_\+}} $>$
  198. \begin{DoxyCompactList}\small\item\em defer\+\_\+i alias template for F$<$\+T, Is...$>$ \end{DoxyCompactList}\end{DoxyCompactItemize}
  199. \textbf{ }\par
  200. \begin{DoxyCompactItemize}
  201. \item
  202. {\footnotesize template$<$typename... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$ Fns... $>$
  203. \item
  204. {\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... $>$
  205. \end{DoxyCompactItemize}
  206. \textbf{ }\par
  207. \begin{DoxyCompactItemize}
  208. \item
  209. {\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... $>$ $>$
  210. \end{DoxyCompactItemize}
  211. \textbf{ }\par
  212. \begin{DoxyCompactItemize}
  213. \item
  214. {\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... $>$ $>$
  215. \end{DoxyCompactItemize}
  216. \textbf{ }\par
  217. \begin{DoxyCompactItemize}
  218. \item
  219. {\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 $>$ $>$$>$
  220. \end{DoxyCompactItemize}
  221. \textbf{ }\par
  222. \begin{DoxyCompactItemize}
  223. \item
  224. {\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$
  225. \begin{DoxyCompactList}\small\item\em Negation. \end{DoxyCompactList}\item
  226. {\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() $>$
  227. \begin{DoxyCompactList}\small\item\em Addition. \end{DoxyCompactList}\item
  228. {\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() $>$
  229. \begin{DoxyCompactList}\small\item\em Multiplication. \end{DoxyCompactList}\item
  230. {\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() $>$
  231. \begin{DoxyCompactList}\small\item\em Division. \end{DoxyCompactList}\item
  232. {\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() $>$
  233. \begin{DoxyCompactList}\small\item\em Modulo. \end{DoxyCompactList}\item
  234. {\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 $>$ $>$
  235. \begin{DoxyCompactList}\small\item\em Substruction. \end{DoxyCompactList}\item
  236. {\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 $>$ $>$
  237. \begin{DoxyCompactList}\small\item\em Increase. \end{DoxyCompactList}\item
  238. {\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 $>$ $>$
  239. \begin{DoxyCompactList}\small\item\em decrease \end{DoxyCompactList}\end{DoxyCompactItemize}
  240. \textbf{ }\par
  241. \begin{DoxyCompactItemize}
  242. \item
  243. {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ \+\_\+\+Tp1()==\+\_\+\+Tp2()$>$
  244. \item
  245. {\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1()$<$ \+\_\+\+Tp2())$>$
  246. \item
  247. {\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 $>$ $>$
  248. \begin{DoxyCompactList}\small\item\em Not equal. \end{DoxyCompactList}\item
  249. {\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 $>$
  250. \begin{DoxyCompactList}\small\item\em Greater than. \end{DoxyCompactList}\item
  251. {\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 $>$ $>$
  252. \begin{DoxyCompactList}\small\item\em Less or equal. \end{DoxyCompactList}\item
  253. {\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 $>$ $>$
  254. \begin{DoxyCompactList}\small\item\em Greater or equal. \end{DoxyCompactList}\end{DoxyCompactItemize}
  255. \textbf{ }\par
  256. \begin{DoxyCompactItemize}
  257. \item
  258. {\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())$>$
  259. \item
  260. {\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()$>$
  261. \item
  262. {\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()$>$
  263. \item
  264. {\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()$>$
  265. \item
  266. {\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())$>$
  267. \item
  268. {\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())$>$
  269. \end{DoxyCompactItemize}
  270. \textbf{ }\par
  271. \begin{DoxyCompactItemize}
  272. \item
  273. {\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... $>$ $>$
  274. \begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean. \end{DoxyCompactList}\item
  275. {\footnotesize template$<$typename If , typename... Args$>$ }\\using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} = \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}}$<$ If\+::type\+::value, Args... $>$
  276. \begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean type. \end{DoxyCompactList}\end{DoxyCompactItemize}
  277. \textbf{ }\par
  278. \begin{DoxyCompactItemize}
  279. \item
  280. {\footnotesize template$<$typename T1 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{first\+\_\+of}} = T1
  281. \begin{DoxyCompactList}\small\item\em Select the first type of a type sequence. \end{DoxyCompactList}\item
  282. {\footnotesize template$<$typename T1 , typename T2 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{second\+\_\+of}} = T2
  283. \begin{DoxyCompactList}\small\item\em Select the second type of a type sequence. \end{DoxyCompactList}\end{DoxyCompactItemize}
  284. \textbf{ }\par
  285. \begin{DoxyCompactItemize}
  286. \item
  287. {\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 $>$ $>$
  288. \begin{DoxyCompactList}\small\item\em Well formed only if {\ttfamily If} is true. \end{DoxyCompactList}\end{DoxyCompactItemize}
  289. \textbf{ }\par
  290. \begin{DoxyCompactItemize}
  291. \item
  292. {\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}} = std\+::enable\+\_\+if$<$ If, \+\_\+\+Tp $>$
  293. \begin{DoxyCompactList}\small\item\em enable\+\_\+if, imported from stl \end{DoxyCompactList}\item
  294. {\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 $>$ $>$
  295. \begin{DoxyCompactList}\small\item\em alias template for enable\+\_\+if \end{DoxyCompactList}\end{DoxyCompactItemize}
  296. \textbf{ }\par
  297. \begin{DoxyCompactItemize}
  298. \item
  299. {\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 $>$
  300. \item
  301. {\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... $>$
  302. \end{DoxyCompactItemize}
  303. \textbf{ }\par
  304. \begin{DoxyCompactItemize}
  305. \item
  306. {\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 $>$
  307. \item
  308. {\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 $>$ $>$
  309. \end{DoxyCompactItemize}
  310. \textbf{ }\par
  311. \begin{DoxyCompactItemize}
  312. \item
  313. {\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 $>$ $>$
  314. \item
  315. {\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 $>$
  316. \end{DoxyCompactItemize}
  317. \textbf{ }\par
  318. \begin{DoxyCompactItemize}
  319. \item
  320. {\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 $>$ $>$
  321. \end{DoxyCompactItemize}
  322. \textbf{ }\par
  323. \begin{DoxyCompactItemize}
  324. \item
  325. {\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 $>$ $>$
  326. \end{DoxyCompactItemize}
  327. \textbf{ }\par
  328. \begin{DoxyCompactItemize}
  329. \item
  330. {\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... $>$ $>$
  331. \end{DoxyCompactItemize}
  332. \textbf{ }\par
  333. \begin{DoxyCompactItemize}
  334. \item
  335. {\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 $>$ $>$
  336. \item
  337. {\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 $>$
  338. \begin{DoxyCompactList}\small\item\em accumulate is an stl name for fold \end{DoxyCompactList}\item
  339. {\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 $>$ $>$
  340. \end{DoxyCompactItemize}
  341. \textbf{ }\par
  342. \begin{DoxyCompactItemize}
  343. \item
  344. {\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 $>$ $>$
  345. \end{DoxyCompactItemize}
  346. \textbf{ }\par
  347. \begin{DoxyCompactItemize}
  348. \item
  349. {\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 $>$ $>$
  350. \end{DoxyCompactItemize}
  351. \textbf{ }\par
  352. \begin{DoxyCompactItemize}
  353. \item
  354. {\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 $>$ $>$
  355. \end{DoxyCompactItemize}
  356. \textbf{ }\par
  357. \begin{DoxyCompactItemize}
  358. \item
  359. {\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... $>$ $>$ $>$
  360. \end{DoxyCompactItemize}
  361. \textbf{ }\par
  362. \begin{DoxyCompactItemize}
  363. \item
  364. {\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... $>$ $>$ $>$
  365. \end{DoxyCompactItemize}
  366. \textbf{ }\par
  367. \begin{DoxyCompactItemize}
  368. \item
  369. {\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 $>$ $>$
  370. \item
  371. {\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 $>$ $>$
  372. \end{DoxyCompactItemize}
  373. \textbf{ }\par
  374. \begin{DoxyCompactItemize}
  375. \item
  376. {\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 $>$ $>$
  377. \item
  378. {\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 $>$ $>$
  379. \end{DoxyCompactItemize}
  380. \textbf{ }\par
  381. \begin{DoxyCompactItemize}
  382. \item
  383. {\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 $>$ $>$
  384. \item
  385. {\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 $>$ $>$
  386. \end{DoxyCompactItemize}
  387. \textbf{ }\par
  388. \begin{DoxyCompactItemize}
  389. \item
  390. {\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}}$<$$>$ $>$ $>$
  391. \end{DoxyCompactItemize}
  392. \textbf{ }\par
  393. \begin{DoxyCompactItemize}
  394. \item
  395. {\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}}$<$$>$ $>$ $>$
  396. \item
  397. {\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 $>$ $>$
  398. \end{DoxyCompactItemize}
  399. \begin{DoxyCompactItemize}
  400. \item
  401. {\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
  402. \item
  403. {\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... $>$ $>$
  404. \item
  405. {\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... $>$ $>$
  406. \item
  407. {\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... $>$ $>$ $>$
  408. \item
  409. {\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 $>$ $>$
  410. \item
  411. {\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
  412. \begin{DoxyCompactList}\small\item\em Detection predicate. \end{DoxyCompactList}\item
  413. {\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
  414. \begin{DoxyCompactList}\small\item\em evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not \end{DoxyCompactList}\item
  415. {\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}{is\+\_\+detected\+\_\+convertible\+\_\+v}}
  416. \end{DoxyCompactItemize}
  417. \subsection{Typedef Documentation}
  418. \mbox{\Hypertarget{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}\label{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}}
  419. \index{utl\+::meta@{utl\+::meta}!accumulate@{accumulate}}
  420. \index{accumulate@{accumulate}!utl\+::meta@{utl\+::meta}}
  421. \subsubsection{\texorpdfstring{accumulate}{accumulate}}
  422. {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\
  423. using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{utl\+::meta\+::accumulate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$List, V, Fn$>$}
  424. accumulate is an stl name for fold
  425. \begin{Desc}
  426. \item[Examples\+: ]\par
  427. \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}
  428. Definition at line 387 of file typelist.\+h.
  429. \mbox{\Hypertarget{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}\label{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}}
  430. \index{utl\+::meta@{utl\+::meta}!add@{add}}
  431. \index{add@{add}!utl\+::meta@{utl\+::meta}}
  432. \subsubsection{\texorpdfstring{add}{add}}
  433. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  434. using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{utl\+::meta\+::add}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() + \+\_\+\+Tp2()), \+\_\+\+Tp1() + \+\_\+\+Tp2() $>$}
  435. Addition.
  436. Definition at line 144 of file operations.\+h.
  437. \mbox{\Hypertarget{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}\label{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}}
  438. \index{utl\+::meta@{utl\+::meta}!alignof\+\_\+@{alignof\+\_\+}}
  439. \index{alignof\+\_\+@{alignof\+\_\+}!utl\+::meta@{utl\+::meta}}
  440. \subsubsection{\texorpdfstring{alignof\+\_\+}{alignof\_}}
  441. {\footnotesize\ttfamily template$<$typename Tp $>$ \\
  442. using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{utl\+::meta\+::alignof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$alignof(Tp)$>$}
  443. Computes the alignment required for any instance of the type {\ttfamily Tp}. Complexity $ O(1) $.
  444. Definition at line 120 of file integral.\+h.
  445. \mbox{\Hypertarget{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}\label{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}}
  446. \index{utl\+::meta@{utl\+::meta}!all\+\_\+of@{all\+\_\+of}}
  447. \index{all\+\_\+of@{all\+\_\+of}!utl\+::meta@{utl\+::meta}}
  448. \subsubsection{\texorpdfstring{all\+\_\+of}{all\_of}}
  449. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  450. 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$>$ $>$ $>$ $>$}
  451. 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}
  452. \item[Examples\+: ]\par
  453. \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}
  454. Definition at line 861 of file typelist.\+h.
  455. \mbox{\Hypertarget{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}\label{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}}
  456. \index{utl\+::meta@{utl\+::meta}!any\+\_\+of@{any\+\_\+of}}
  457. \index{any\+\_\+of@{any\+\_\+of}!utl\+::meta@{utl\+::meta}}
  458. \subsubsection{\texorpdfstring{any\+\_\+of}{any\_of}}
  459. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  460. 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$>$ $>$ $>$}
  461. Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily true\+\_\+} for any of the elements in the {\ttfamily List} and {\ttfamily false\+\_\+} otherwise. \begin{Desc}
  462. \item[Examples\+: ]\par
  463. \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}
  464. Definition at line 868 of file typelist.\+h.
  465. \mbox{\Hypertarget{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}\label{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}}
  466. \index{utl\+::meta@{utl\+::meta}!apply@{apply}}
  467. \index{apply@{apply}!utl\+::meta@{utl\+::meta}}
  468. \subsubsection{\texorpdfstring{apply}{apply}}
  469. {\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\
  470. 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$>$}
  471. Apply the Invocable {\ttfamily Fn} using the types in the type {\ttfamily Seq} as arguments. \begin{DoxyNote}{Note}
  472. This is the opposed operation of typelist$<$\+Ts...$>$
  473. \end{DoxyNote}
  474. 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}
  475. \item[Examples\+: ]\par
  476. \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}
  477. Definition at line 197 of file typelist.\+h.
  478. \mbox{\Hypertarget{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}\label{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}}
  479. \index{utl\+::meta@{utl\+::meta}!apply\+\_\+t@{apply\+\_\+t}}
  480. \index{apply\+\_\+t@{apply\+\_\+t}!utl\+::meta@{utl\+::meta}}
  481. \subsubsection{\texorpdfstring{apply\+\_\+t}{apply\_t}}
  482. {\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\
  483. 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$>$ $>$}
  484. \begin{Desc}
  485. \item[Examples\+: ]\par
  486. \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}
  487. Definition at line 200 of file typelist.\+h.
  488. \mbox{\Hypertarget{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}\label{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}}
  489. \index{utl\+::meta@{utl\+::meta}!at@{at}}
  490. \index{at@{at}!utl\+::meta@{utl\+::meta}}
  491. \subsubsection{\texorpdfstring{at}{at}}
  492. {\footnotesize\ttfamily template$<$typename List , typename N $>$ \\
  493. using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{utl\+::meta\+::at}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$List, N\+::type\+::value$>$}
  494. Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}.
  495. Complexity $ O(N) $. \begin{Desc}
  496. \item[Examples\+: ]\par
  497. \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}
  498. Definition at line 253 of file typelist.\+h.
  499. \mbox{\Hypertarget{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}\label{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}}
  500. \index{utl\+::meta@{utl\+::meta}!at\+\_\+c@{at\+\_\+c}}
  501. \index{at\+\_\+c@{at\+\_\+c}!utl\+::meta@{utl\+::meta}}
  502. \subsubsection{\texorpdfstring{at\+\_\+c}{at\_c}}
  503. {\footnotesize\ttfamily template$<$typename List , index\+\_\+t N$>$ \\
  504. 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$>$ $>$}
  505. Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}.
  506. Complexity $ O(logN) $. \begin{Desc}
  507. \item[Examples\+: ]\par
  508. \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}
  509. Definition at line 245 of file typelist.\+h.
  510. \mbox{\Hypertarget{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}\label{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}}
  511. \index{utl\+::meta@{utl\+::meta}!back@{back}}
  512. \index{back@{back}!utl\+::meta@{utl\+::meta}}
  513. \subsubsection{\texorpdfstring{back}{back}}
  514. {\footnotesize\ttfamily template$<$typename List $>$ \\
  515. 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$>$ $>$}
  516. Return the last element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(N) $. \begin{Desc}
  517. \item[Examples\+: ]\par
  518. \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}
  519. Definition at line 296 of file typelist.\+h.
  520. \mbox{\Hypertarget{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}\label{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}}
  521. \index{utl\+::meta@{utl\+::meta}!bitand\+\_\+@{bitand\+\_\+}}
  522. \index{bitand\+\_\+@{bitand\+\_\+}!utl\+::meta@{utl\+::meta}}
  523. \subsubsection{\texorpdfstring{bitand\+\_\+}{bitand\_}}
  524. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  525. using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{utl\+::meta\+::bitand\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() \& \+\_\+\+Tp2()), \+\_\+\+Tp1() \& \+\_\+\+Tp2()$>$}
  526. \begin{DoxyReturn}{Returns}
  527. bitwise and (\&) operation of its arguments
  528. \end{DoxyReturn}
  529. Definition at line 208 of file operations.\+h.
  530. \mbox{\Hypertarget{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}\label{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}}
  531. \index{utl\+::meta@{utl\+::meta}!bitnot\+\_\+@{bitnot\+\_\+}}
  532. \index{bitnot\+\_\+@{bitnot\+\_\+}!utl\+::meta@{utl\+::meta}}
  533. \subsubsection{\texorpdfstring{bitnot\+\_\+}{bitnot\_}}
  534. {\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\
  535. 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())$>$}
  536. Bitwise operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns}
  537. bitwise not ($\sim$) operation of its argument.
  538. \end{DoxyReturn}
  539. Definition at line 205 of file operations.\+h.
  540. \mbox{\Hypertarget{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}\label{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}}
  541. \index{utl\+::meta@{utl\+::meta}!bitor\+\_\+@{bitor\+\_\+}}
  542. \index{bitor\+\_\+@{bitor\+\_\+}!utl\+::meta@{utl\+::meta}}
  543. \subsubsection{\texorpdfstring{bitor\+\_\+}{bitor\_}}
  544. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  545. 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()$>$}
  546. \begin{DoxyReturn}{Returns}
  547. bitwise or ($\vert$) operation of its arguments.
  548. \end{DoxyReturn}
  549. Definition at line 211 of file operations.\+h.
  550. \mbox{\Hypertarget{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}\label{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}}
  551. \index{utl\+::meta@{utl\+::meta}!bitxor\+\_\+@{bitxor\+\_\+}}
  552. \index{bitxor\+\_\+@{bitxor\+\_\+}!utl\+::meta@{utl\+::meta}}
  553. \subsubsection{\texorpdfstring{bitxor\+\_\+}{bitxor\_}}
  554. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  555. 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()$>$}
  556. \begin{DoxyReturn}{Returns}
  557. bitwise xor ($^\wedge$) operation of its arguments.
  558. \end{DoxyReturn}
  559. Definition at line 215 of file operations.\+h.
  560. \mbox{\Hypertarget{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}\label{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}}
  561. \index{utl\+::meta@{utl\+::meta}!bool\+\_\+@{bool\+\_\+}}
  562. \index{bool\+\_\+@{bool\+\_\+}!utl\+::meta@{utl\+::meta}}
  563. \subsubsection{\texorpdfstring{bool\+\_\+}{bool\_}}
  564. {\footnotesize\ttfamily template$<$bool v$>$ \\
  565. using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{utl\+::meta\+::bool\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$bool, v$>$}
  566. bool\+\_\+ type\+: integral constant wrapper for bool
  567. Wrappers for basic types
  568. Definition at line 66 of file integral.\+h.
  569. \mbox{\Hypertarget{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}\label{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}}
  570. \index{utl\+::meta@{utl\+::meta}!cat@{cat}}
  571. \index{cat@{cat}!utl\+::meta@{utl\+::meta}}
  572. \subsubsection{\texorpdfstring{cat}{cat}}
  573. {\footnotesize\ttfamily template$<$typename... Lists$>$ \\
  574. 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...$>$ $>$}
  575. 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}
  576. \item[Examples\+: ]\par
  577. \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}
  578. Definition at line 338 of file typelist.\+h.
  579. \mbox{\Hypertarget{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}\label{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}}
  580. \index{utl\+::meta@{utl\+::meta}!char\+\_\+@{char\+\_\+}}
  581. \index{char\+\_\+@{char\+\_\+}!utl\+::meta@{utl\+::meta}}
  582. \subsubsection{\texorpdfstring{char\+\_\+}{char\_}}
  583. {\footnotesize\ttfamily template$<$char v$>$ \\
  584. using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{utl\+::meta\+::char\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$char, v$>$}
  585. char\+\_\+ type\+: integral constant wrapper for {\ttfamily char}
  586. Definition at line 94 of file integral.\+h.
  587. \mbox{\Hypertarget{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}\label{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}}
  588. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+eq@{comp\+\_\+eq}}
  589. \index{comp\+\_\+eq@{comp\+\_\+eq}!utl\+::meta@{utl\+::meta}}
  590. \subsubsection{\texorpdfstring{comp\+\_\+eq}{comp\_eq}}
  591. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  592. using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{utl\+::meta\+::comp\+\_\+eq}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$\+\_\+\+Tp1() == \+\_\+\+Tp2()$>$}
  593. Comparison operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns}
  594. a true-\/valued Integral Constant if \+\_\+\+Tp1 and \+\_\+\+Tp2 are equal.
  595. \end{DoxyReturn}
  596. Definition at line 184 of file operations.\+h.
  597. \mbox{\Hypertarget{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}\label{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}}
  598. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+ge@{comp\+\_\+ge}}
  599. \index{comp\+\_\+ge@{comp\+\_\+ge}!utl\+::meta@{utl\+::meta}}
  600. \subsubsection{\texorpdfstring{comp\+\_\+ge}{comp\_ge}}
  601. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  602. 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$>$ $>$}
  603. Greater or equal.
  604. Definition at line 195 of file operations.\+h.
  605. \mbox{\Hypertarget{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}\label{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}}
  606. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+gt@{comp\+\_\+gt}}
  607. \index{comp\+\_\+gt@{comp\+\_\+gt}!utl\+::meta@{utl\+::meta}}
  608. \subsubsection{\texorpdfstring{comp\+\_\+gt}{comp\_gt}}
  609. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  610. using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{utl\+::meta\+::comp\+\_\+gt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} $<$\+\_\+\+Tp2, \+\_\+\+Tp1$>$}
  611. Greater than.
  612. Definition at line 191 of file operations.\+h.
  613. \mbox{\Hypertarget{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}\label{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}}
  614. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+le@{comp\+\_\+le}}
  615. \index{comp\+\_\+le@{comp\+\_\+le}!utl\+::meta@{utl\+::meta}}
  616. \subsubsection{\texorpdfstring{comp\+\_\+le}{comp\_le}}
  617. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  618. 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$>$ $>$}
  619. Less or equal.
  620. Definition at line 193 of file operations.\+h.
  621. \mbox{\Hypertarget{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}\label{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}}
  622. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+lt@{comp\+\_\+lt}}
  623. \index{comp\+\_\+lt@{comp\+\_\+lt}!utl\+::meta@{utl\+::meta}}
  624. \subsubsection{\texorpdfstring{comp\+\_\+lt}{comp\_lt}}
  625. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  626. using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{utl\+::meta\+::comp\+\_\+lt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1() $<$ \+\_\+\+Tp2())$>$}
  627. \begin{DoxyReturn}{Returns}
  628. a true-\/valued Integral Constant if \+\_\+\+Tp1 is less than \+\_\+\+Tp2.
  629. \end{DoxyReturn}
  630. Definition at line 186 of file operations.\+h.
  631. \mbox{\Hypertarget{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}\label{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}}
  632. \index{utl\+::meta@{utl\+::meta}!comp\+\_\+ne@{comp\+\_\+ne}}
  633. \index{comp\+\_\+ne@{comp\+\_\+ne}!utl\+::meta@{utl\+::meta}}
  634. \subsubsection{\texorpdfstring{comp\+\_\+ne}{comp\_ne}}
  635. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  636. 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$>$ $>$}
  637. Not equal.
  638. Definition at line 189 of file operations.\+h.
  639. \mbox{\Hypertarget{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}\label{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}}
  640. \index{utl\+::meta@{utl\+::meta}!compose@{compose}}
  641. \index{compose@{compose}!utl\+::meta@{utl\+::meta}}
  642. \subsubsection{\texorpdfstring{compose}{compose}}
  643. {\footnotesize\ttfamily template$<$typename... Fns$>$ \\
  644. using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{utl\+::meta\+::compose}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$Fns...$>$}
  645. \begin{Desc}
  646. \item[Examples\+: ]\par
  647. \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}
  648. Definition at line 308 of file invoke.\+h.
  649. \mbox{\Hypertarget{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}\label{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}}
  650. \index{utl\+::meta@{utl\+::meta}!compose\+\_\+f@{compose\+\_\+f}}
  651. \index{compose\+\_\+f@{compose\+\_\+f}!utl\+::meta@{utl\+::meta}}
  652. \subsubsection{\texorpdfstring{compose\+\_\+f}{compose\_f}}
  653. {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class... Fns$>$ \\
  654. 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...$>$}
  655. \begin{Desc}
  656. \item[Examples\+: ]\par
  657. \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}
  658. Definition at line 324 of file invoke.\+h.
  659. \mbox{\Hypertarget{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}\label{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}}
  660. \index{utl\+::meta@{utl\+::meta}!count@{count}}
  661. \index{count@{count}!utl\+::meta@{utl\+::meta}}
  662. \subsubsection{\texorpdfstring{count}{count}}
  663. {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\
  664. 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$>$ $>$}
  665. Count all occurrences of type {\ttfamily T} int {\ttfamily List} \begin{Desc}
  666. \item[Examples\+: ]\par
  667. \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}
  668. Definition at line 761 of file typelist.\+h.
  669. \mbox{\Hypertarget{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}\label{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}}
  670. \index{utl\+::meta@{utl\+::meta}!count\+\_\+if@{count\+\_\+if}}
  671. \index{count\+\_\+if@{count\+\_\+if}!utl\+::meta@{utl\+::meta}}
  672. \subsubsection{\texorpdfstring{count\+\_\+if}{count\_if}}
  673. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  674. 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$>$ $>$}
  675. Count all {\ttfamily Items} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$}
  676. Complexity $ O(N) $
  677. \begin{DoxyParams}{Parameters}
  678. {\em List} & A typelist \\
  679. \hline
  680. {\em Pred} & A Unary invocable predicate \\
  681. \hline
  682. \end{DoxyParams}
  683. \begin{DoxyReturn}{Returns}
  684. The total count of occurrences as an integral constant of size\+\_\+t
  685. \end{DoxyReturn}
  686. \begin{Desc}
  687. \item[Examples\+: ]\par
  688. \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}
  689. Definition at line 755 of file typelist.\+h.
  690. \mbox{\Hypertarget{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}\label{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}}
  691. \index{utl\+::meta@{utl\+::meta}!dec@{dec}}
  692. \index{dec@{dec}!utl\+::meta@{utl\+::meta}}
  693. \subsubsection{\texorpdfstring{dec}{dec}}
  694. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\
  695. 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$>$ $>$}
  696. decrease
  697. Definition at line 173 of file operations.\+h.
  698. \mbox{\Hypertarget{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}\label{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}}
  699. \index{utl\+::meta@{utl\+::meta}!defer@{defer}}
  700. \index{defer@{defer}!utl\+::meta@{utl\+::meta}}
  701. \subsubsection{\texorpdfstring{defer}{defer}}
  702. {\footnotesize\ttfamily template$<$template$<$ class... $>$ class F, class... Ts$>$ \\
  703. 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\+\_\+}} $>$}
  704. defer alias template for F$<$\+Ts...$>$
  705. \begin{Desc}
  706. \item[Examples\+: ]\par
  707. \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}
  708. Definition at line 213 of file invoke.\+h.
  709. \mbox{\Hypertarget{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}\label{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}}
  710. \index{utl\+::meta@{utl\+::meta}!defer\+\_\+i@{defer\+\_\+i}}
  711. \index{defer\+\_\+i@{defer\+\_\+i}!utl\+::meta@{utl\+::meta}}
  712. \subsubsection{\texorpdfstring{defer\+\_\+i}{defer\_i}}
  713. {\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\
  714. 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\+\_\+}} $>$}
  715. defer\+\_\+i alias template for F$<$\+T, Is...$>$
  716. \begin{Desc}
  717. \item[Examples\+: ]\par
  718. \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}
  719. Definition at line 221 of file invoke.\+h.
  720. \mbox{\Hypertarget{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}\label{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}}
  721. \index{utl\+::meta@{utl\+::meta}!detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}}
  722. \index{detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}!utl\+::meta@{utl\+::meta}}
  723. \subsubsection{\texorpdfstring{detected\+\_\+or\+\_\+t}{detected\_or\_t}}
  724. {\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\
  725. 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...$>$ $>$}
  726. \begin{Desc}
  727. \item[Examples\+: ]\par
  728. \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}
  729. Definition at line 172 of file detection.\+h.
  730. \mbox{\Hypertarget{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}\label{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}}
  731. \index{utl\+::meta@{utl\+::meta}!detected\+\_\+t@{detected\+\_\+t}}
  732. \index{detected\+\_\+t@{detected\+\_\+t}!utl\+::meta@{utl\+::meta}}
  733. \subsubsection{\texorpdfstring{detected\+\_\+t}{detected\_t}}
  734. {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\
  735. 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...$>$ $>$}
  736. \begin{Desc}
  737. \item[Examples\+: ]\par
  738. \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}
  739. Definition at line 146 of file detection.\+h.
  740. \mbox{\Hypertarget{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}\label{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}}
  741. \index{utl\+::meta@{utl\+::meta}!divide@{divide}}
  742. \index{divide@{divide}!utl\+::meta@{utl\+::meta}}
  743. \subsubsection{\texorpdfstring{divide}{divide}}
  744. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  745. using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{utl\+::meta\+::divide}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() / \+\_\+\+Tp2()), \+\_\+\+Tp1() / \+\_\+\+Tp2() $>$}
  746. Division.
  747. Definition at line 156 of file operations.\+h.
  748. \mbox{\Hypertarget{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}\label{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}}
  749. \index{utl\+::meta@{utl\+::meta}!empty@{empty}}
  750. \index{empty@{empty}!utl\+::meta@{utl\+::meta}}
  751. \subsubsection{\texorpdfstring{empty}{empty}}
  752. {\footnotesize\ttfamily template$<$typename List $>$ \\
  753. using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{utl\+::meta\+::empty}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$List\+::empty()$>$}
  754. An Boolean constant wrapper that returns if the typelist is empty
  755. Complexity $ O(1) $.
  756. \begin{DoxyParams}{Parameters}
  757. {\em List} & A typelist \\
  758. \hline
  759. \end{DoxyParams}
  760. \begin{DoxyReturn}{Returns}
  761. Empty or not
  762. \end{DoxyReturn}
  763. \begin{Desc}
  764. \item[Examples\+: ]\par
  765. \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}
  766. Definition at line 140 of file typelist.\+h.
  767. \mbox{\Hypertarget{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}\label{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}}
  768. \index{utl\+::meta@{utl\+::meta}!enable\+\_\+if@{enable\+\_\+if}}
  769. \index{enable\+\_\+if@{enable\+\_\+if}!utl\+::meta@{utl\+::meta}}
  770. \subsubsection{\texorpdfstring{enable\+\_\+if}{enable\_if}}
  771. {\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\
  772. using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{utl\+::meta\+::enable\+\_\+if}} = typedef std\+::enable\+\_\+if$<$If, \+\_\+\+Tp$>$}
  773. enable\+\_\+if, imported from stl
  774. enable\+\_\+if
  775. Definition at line 60 of file sfinae.\+h.
  776. \mbox{\Hypertarget{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}\label{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}}
  777. \index{utl\+::meta@{utl\+::meta}!enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}}
  778. \index{enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}!utl\+::meta@{utl\+::meta}}
  779. \subsubsection{\texorpdfstring{enable\+\_\+if\+\_\+t}{enable\_if\_t}}
  780. {\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\
  781. 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$>$ $>$}
  782. alias template for enable\+\_\+if
  783. Definition at line 63 of file sfinae.\+h.
  784. \mbox{\Hypertarget{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}\label{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}}
  785. \index{utl\+::meta@{utl\+::meta}!eval@{eval}}
  786. \index{eval@{eval}!utl\+::meta@{utl\+::meta}}
  787. \subsubsection{\texorpdfstring{eval}{eval}}
  788. {\footnotesize\ttfamily template$<$typename Tp $>$ \\
  789. using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{utl\+::meta\+::eval}} = typedef typename Tp\+::type}
  790. Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions.
  791. \begin{Desc}
  792. \item[Examples\+: ]\par
  793. \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}
  794. Definition at line 49 of file integral.\+h.
  795. \mbox{\Hypertarget{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}\label{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}}
  796. \index{utl\+::meta@{utl\+::meta}!false\+\_\+@{false\+\_\+}}
  797. \index{false\+\_\+@{false\+\_\+}!utl\+::meta@{utl\+::meta}}
  798. \subsubsection{\texorpdfstring{false\+\_\+}{false\_}}
  799. {\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{utl\+::meta\+::false\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$false$>$}
  800. The type used as a compile-\/time boolean with false value.
  801. \begin{Desc}
  802. \item[Examples\+: ]\par
  803. \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}
  804. Definition at line 69 of file integral.\+h.
  805. \mbox{\Hypertarget{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}\label{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}}
  806. \index{utl\+::meta@{utl\+::meta}!filter@{filter}}
  807. \index{filter@{filter}!utl\+::meta@{utl\+::meta}}
  808. \subsubsection{\texorpdfstring{filter}{filter}}
  809. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  810. 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}}$<$$>$ $>$ $>$}
  811. 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\+\_\+}
  812. Complexity $ O(N) $
  813. \begin{DoxyParams}{Parameters}
  814. {\em List} & The input typelist \\
  815. \hline
  816. {\em Pred} & A unary invocable predicate \\
  817. \hline
  818. \end{DoxyParams}
  819. \begin{Desc}
  820. \item[Examples\+: ]\par
  821. \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}
  822. Definition at line 800 of file typelist.\+h.
  823. \mbox{\Hypertarget{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}\label{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}}
  824. \index{utl\+::meta@{utl\+::meta}!find@{find}}
  825. \index{find@{find}!utl\+::meta@{utl\+::meta}}
  826. \subsubsection{\texorpdfstring{find}{find}}
  827. {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\
  828. 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$>$ $>$}
  829. Search for the first occurrence of type {\ttfamily T} on a {\ttfamily List} \begin{Desc}
  830. \item[Examples\+: ]\par
  831. \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}
  832. Definition at line 663 of file typelist.\+h.
  833. \mbox{\Hypertarget{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}\label{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}}
  834. \index{utl\+::meta@{utl\+::meta}!find\+\_\+if@{find\+\_\+if}}
  835. \index{find\+\_\+if@{find\+\_\+if}!utl\+::meta@{utl\+::meta}}
  836. \subsubsection{\texorpdfstring{find\+\_\+if}{find\_if}}
  837. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  838. 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$>$ $>$}
  839. Search for the first {\ttfamily Item} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$}
  840. Complexity $ O(N) $
  841. \begin{DoxyParams}{Parameters}
  842. {\em List} & A typelist \\
  843. \hline
  844. {\em Pred} & A Unary invocable predicate \\
  845. \hline
  846. \end{DoxyParams}
  847. \begin{DoxyReturn}{Returns}
  848. An integral constant of index\+\_\+t with the location of the first match, or Npos otherwise.
  849. \end{DoxyReturn}
  850. \begin{Desc}
  851. \item[Examples\+: ]\par
  852. \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}
  853. Definition at line 657 of file typelist.\+h.
  854. \mbox{\Hypertarget{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}\label{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}}
  855. \index{utl\+::meta@{utl\+::meta}!fold@{fold}}
  856. \index{fold@{fold}!utl\+::meta@{utl\+::meta}}
  857. \subsubsection{\texorpdfstring{fold}{fold}}
  858. {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\
  859. 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$>$ $>$}
  860. \begin{Desc}
  861. \item[Examples\+: ]\par
  862. \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}
  863. Definition at line 383 of file typelist.\+h.
  864. \mbox{\Hypertarget{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}\label{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}}
  865. \index{utl\+::meta@{utl\+::meta}!front@{front}}
  866. \index{front@{front}!utl\+::meta@{utl\+::meta}}
  867. \subsubsection{\texorpdfstring{front}{front}}
  868. {\footnotesize\ttfamily template$<$typename List $>$ \\
  869. 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$>$ $>$}
  870. Return the first element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(1) $. \begin{Desc}
  871. \item[Examples\+: ]\par
  872. \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}
  873. Definition at line 274 of file typelist.\+h.
  874. \mbox{\Hypertarget{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}\label{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}}
  875. \index{utl\+::meta@{utl\+::meta}!identity\+\_\+t@{identity\+\_\+t}}
  876. \index{identity\+\_\+t@{identity\+\_\+t}!utl\+::meta@{utl\+::meta}}
  877. \subsubsection{\texorpdfstring{identity\+\_\+t}{identity\_t}}
  878. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\
  879. 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$>$ $>$}
  880. identity type alias
  881. \begin{Desc}
  882. \item[Examples\+: ]\par
  883. \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}
  884. Definition at line 68 of file invoke.\+h.
  885. \mbox{\Hypertarget{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}\label{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}}
  886. \index{utl\+::meta@{utl\+::meta}!inc@{inc}}
  887. \index{inc@{inc}!utl\+::meta@{utl\+::meta}}
  888. \subsubsection{\texorpdfstring{inc}{inc}}
  889. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\
  890. 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$>$ $>$}
  891. Increase.
  892. Definition at line 169 of file operations.\+h.
  893. \mbox{\Hypertarget{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}\label{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}}
  894. \index{utl\+::meta@{utl\+::meta}!index\+\_\+@{index\+\_\+}}
  895. \index{index\+\_\+@{index\+\_\+}!utl\+::meta@{utl\+::meta}}
  896. \subsubsection{\texorpdfstring{index\+\_\+}{index\_}}
  897. {\footnotesize\ttfamily template$<$index\+\_\+t v$>$ \\
  898. 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$>$}
  899. index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t
  900. Definition at line 106 of file integral.\+h.
  901. \mbox{\Hypertarget{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}\label{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}}
  902. \index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence@{index\+\_\+sequence}}
  903. \index{index\+\_\+sequence@{index\+\_\+sequence}!utl\+::meta@{utl\+::meta}}
  904. \subsubsection{\texorpdfstring{index\+\_\+sequence}{index\_sequence}}
  905. {\footnotesize\ttfamily template$<$index\+\_\+t... Idx$>$ \\
  906. 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...$>$}
  907. Alias template index\+\_\+sequence.
  908. Definition at line 136 of file integral.\+h.
  909. \mbox{\Hypertarget{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}\label{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}}
  910. \index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}}
  911. \index{index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}!utl\+::meta@{utl\+::meta}}
  912. \subsubsection{\texorpdfstring{index\+\_\+sequence\+\_\+for}{index\_sequence\_for}}
  913. {\footnotesize\ttfamily template$<$typename... Types$>$ \\
  914. using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{utl\+::meta\+::index\+\_\+sequence\+\_\+for}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}}$<$sizeof...(Types)$>$}
  915. Alias template index\+\_\+sequence\+\_\+for.
  916. Definition at line 144 of file integral.\+h.
  917. \mbox{\Hypertarget{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}\label{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}}
  918. \index{utl\+::meta@{utl\+::meta}!int16\+\_\+@{int16\+\_\+}}
  919. \index{int16\+\_\+@{int16\+\_\+}!utl\+::meta@{utl\+::meta}}
  920. \subsubsection{\texorpdfstring{int16\+\_\+}{int16\_}}
  921. {\footnotesize\ttfamily template$<$int16\+\_\+t v$>$ \\
  922. using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{utl\+::meta\+::int16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int16\+\_\+t, v$>$}
  923. int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t}
  924. Definition at line 80 of file integral.\+h.
  925. \mbox{\Hypertarget{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}\label{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}}
  926. \index{utl\+::meta@{utl\+::meta}!int32\+\_\+@{int32\+\_\+}}
  927. \index{int32\+\_\+@{int32\+\_\+}!utl\+::meta@{utl\+::meta}}
  928. \subsubsection{\texorpdfstring{int32\+\_\+}{int32\_}}
  929. {\footnotesize\ttfamily template$<$int32\+\_\+t v$>$ \\
  930. using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{utl\+::meta\+::int32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int32\+\_\+t, v$>$}
  931. int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t}
  932. Definition at line 87 of file integral.\+h.
  933. \mbox{\Hypertarget{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}\label{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}}
  934. \index{utl\+::meta@{utl\+::meta}!int8\+\_\+@{int8\+\_\+}}
  935. \index{int8\+\_\+@{int8\+\_\+}!utl\+::meta@{utl\+::meta}}
  936. \subsubsection{\texorpdfstring{int8\+\_\+}{int8\_}}
  937. {\footnotesize\ttfamily template$<$int8\+\_\+t v$>$ \\
  938. using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{utl\+::meta\+::int8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int8\+\_\+t, v$>$}
  939. int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t}
  940. Definition at line 73 of file integral.\+h.
  941. \mbox{\Hypertarget{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}\label{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}}
  942. \index{utl\+::meta@{utl\+::meta}!int\+\_\+@{int\+\_\+}}
  943. \index{int\+\_\+@{int\+\_\+}!utl\+::meta@{utl\+::meta}}
  944. \subsubsection{\texorpdfstring{int\+\_\+}{int\_}}
  945. {\footnotesize\ttfamily template$<$int v$>$ \\
  946. using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{utl\+::meta\+::int\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int, v$>$}
  947. int\+\_\+ type\+: integral constant wrapper for {\ttfamily int}
  948. Definition at line 98 of file integral.\+h.
  949. \mbox{\Hypertarget{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}\label{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}}
  950. \index{utl\+::meta@{utl\+::meta}!integer\+\_\+sequence@{integer\+\_\+sequence}}
  951. \index{integer\+\_\+sequence@{integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}}
  952. \subsubsection{\texorpdfstring{integer\+\_\+sequence}{integer\_sequence}}
  953. {\footnotesize\ttfamily template$<$class Tp , Tp... Ints$>$ \\
  954. using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{utl\+::meta\+::integer\+\_\+sequence}} = typedef std\+::integer\+\_\+sequence$<$Tp, Ints...$>$}
  955. integer sequence \begin{Desc}
  956. \item[Examples\+: ]\par
  957. \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}
  958. Definition at line 129 of file integral.\+h.
  959. \mbox{\Hypertarget{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}\label{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}}
  960. \index{utl\+::meta@{utl\+::meta}!integral\+\_\+@{integral\+\_\+}}
  961. \index{integral\+\_\+@{integral\+\_\+}!utl\+::meta@{utl\+::meta}}
  962. \subsubsection{\texorpdfstring{integral\+\_\+}{integral\_}}
  963. {\footnotesize\ttfamily template$<$typename Tp , Tp v$>$ \\
  964. using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{utl\+::meta\+::integral\+\_\+}} = typedef std\+::integral\+\_\+constant$<$Tp, v$>$}
  965. 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
  966. Definition at line 58 of file integral.\+h.
  967. \mbox{\Hypertarget{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}\label{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}}
  968. \index{utl\+::meta@{utl\+::meta}!invoke@{invoke}}
  969. \index{invoke@{invoke}!utl\+::meta@{utl\+::meta}}
  970. \subsubsection{\texorpdfstring{invoke}{invoke}}
  971. {\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\
  972. using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{utl\+::meta\+::invoke}} = typedef typename Fn\+::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$Args...$>$}
  973. invoke, invoke\+\_\+t
  974. Invoke the nested apply meta-\/function from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{DoxyNote}{Note}
  975. This is an analogous to the \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{std\+::invoke()}}
  976. \end{DoxyNote}
  977. \begin{Desc}
  978. \item[Examples\+: ]\par
  979. \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}
  980. Definition at line 81 of file invoke.\+h.
  981. \mbox{\Hypertarget{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}\label{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}}
  982. \index{utl\+::meta@{utl\+::meta}!invoke\+\_\+t@{invoke\+\_\+t}}
  983. \index{invoke\+\_\+t@{invoke\+\_\+t}!utl\+::meta@{utl\+::meta}}
  984. \subsubsection{\texorpdfstring{invoke\+\_\+t}{invoke\_t}}
  985. {\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\
  986. 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...$>$ $>$}
  987. Evaluate the invocation of the nested apply metafunction from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{Desc}
  988. \item[Examples\+: ]\par
  989. \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}
  990. Definition at line 88 of file invoke.\+h.
  991. \mbox{\Hypertarget{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}\label{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}}
  992. \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}}
  993. \index{is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}!utl\+::meta@{utl\+::meta}}
  994. \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+it}{is\_applicable\_it}}
  995. {\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\
  996. 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...$>$ $>$}
  997. check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T}
  998. \begin{Desc}
  999. \item[Examples\+: ]\par
  1000. \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}
  1001. Definition at line 174 of file invoke.\+h.
  1002. \mbox{\Hypertarget{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}\label{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}}
  1003. \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}}
  1004. \index{is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}!utl\+::meta@{utl\+::meta}}
  1005. \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+qt}{is\_applicable\_qt}}
  1006. {\footnotesize\ttfamily template$<$typename Q , typename... T$>$ \\
  1007. 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...$>$ $>$}
  1008. check if we can invoke {\ttfamily Q} with parameters {\ttfamily T}
  1009. \begin{Desc}
  1010. \item[Examples\+: ]\par
  1011. \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}
  1012. Definition at line 168 of file invoke.\+h.
  1013. \mbox{\Hypertarget{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}\label{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}}
  1014. \index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}}
  1015. \index{is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}!utl\+::meta@{utl\+::meta}}
  1016. \subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+t}{is\_applicable\_t}}
  1017. {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\
  1018. 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...$>$ $>$}
  1019. check if we can instantiate {\ttfamily F} with parameters {\ttfamily T}
  1020. \begin{Desc}
  1021. \item[Examples\+: ]\par
  1022. \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}
  1023. Definition at line 163 of file invoke.\+h.
  1024. \mbox{\Hypertarget{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}\label{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}}
  1025. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected@{is\+\_\+detected}}
  1026. \index{is\+\_\+detected@{is\+\_\+detected}!utl\+::meta@{utl\+::meta}}
  1027. \subsubsection{\texorpdfstring{is\+\_\+detected}{is\_detected}}
  1028. {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1029. 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}
  1030. \begin{Desc}
  1031. \item[Examples\+: ]\par
  1032. \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}
  1033. Definition at line 118 of file detection.\+h.
  1034. \mbox{\Hypertarget{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}\label{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}}
  1035. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}}
  1036. \index{is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}!utl\+::meta@{utl\+::meta}}
  1037. \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible}{is\_detected\_convertible}}
  1038. {\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1039. 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 $>$ $>$}
  1040. \begin{Desc}
  1041. \item[Examples\+: ]\par
  1042. \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}
  1043. Definition at line 231 of file detection.\+h.
  1044. \mbox{\Hypertarget{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}\label{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}}
  1045. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}}
  1046. \index{is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}!utl\+::meta@{utl\+::meta}}
  1047. \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact}{is\_detected\_exact}}
  1048. {\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1049. 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...$>$ $>$ $>$}
  1050. \begin{Desc}
  1051. \item[Examples\+: ]\par
  1052. \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}
  1053. Definition at line 199 of file detection.\+h.
  1054. \mbox{\Hypertarget{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}\label{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}}
  1055. \index{utl\+::meta@{utl\+::meta}!long\+\_\+@{long\+\_\+}}
  1056. \index{long\+\_\+@{long\+\_\+}!utl\+::meta@{utl\+::meta}}
  1057. \subsubsection{\texorpdfstring{long\+\_\+}{long\_}}
  1058. {\footnotesize\ttfamily template$<$long v$>$ \\
  1059. using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{utl\+::meta\+::long\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$long, v$>$}
  1060. long\+\_\+ type\+: integral constant wrapper for {\ttfamily long}
  1061. Definition at line 102 of file integral.\+h.
  1062. \mbox{\Hypertarget{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}\label{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}}
  1063. \index{utl\+::meta@{utl\+::meta}!make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}}
  1064. \index{make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}!utl\+::meta@{utl\+::meta}}
  1065. \subsubsection{\texorpdfstring{make\+\_\+index\+\_\+sequence}{make\_index\_sequence}}
  1066. {\footnotesize\ttfamily template$<$index\+\_\+t Num$>$ \\
  1067. 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$>$}
  1068. Alias template make\+\_\+index\+\_\+sequence.
  1069. Definition at line 140 of file integral.\+h.
  1070. \mbox{\Hypertarget{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}\label{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}}
  1071. \index{utl\+::meta@{utl\+::meta}!make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}}
  1072. \index{make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}}
  1073. \subsubsection{\texorpdfstring{make\+\_\+integer\+\_\+sequence}{make\_integer\_sequence}}
  1074. {\footnotesize\ttfamily template$<$typename Tp , Tp Num$>$ \\
  1075. using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{utl\+::meta\+::make\+\_\+integer\+\_\+sequence}} = typedef std\+::make\+\_\+integer\+\_\+sequence$<$Tp, Num$>$}
  1076. Definition at line 132 of file integral.\+h.
  1077. \mbox{\Hypertarget{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}\label{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}}
  1078. \index{utl\+::meta@{utl\+::meta}!modulo@{modulo}}
  1079. \index{modulo@{modulo}!utl\+::meta@{utl\+::meta}}
  1080. \subsubsection{\texorpdfstring{modulo}{modulo}}
  1081. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  1082. using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{utl\+::meta\+::modulo}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$}
  1083. Modulo.
  1084. Definition at line 162 of file operations.\+h.
  1085. \mbox{\Hypertarget{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}\label{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}}
  1086. \index{utl\+::meta@{utl\+::meta}!mult@{mult}}
  1087. \index{mult@{mult}!utl\+::meta@{utl\+::meta}}
  1088. \subsubsection{\texorpdfstring{mult}{mult}}
  1089. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  1090. 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() $>$}
  1091. Multiplication.
  1092. Definition at line 150 of file operations.\+h.
  1093. \mbox{\Hypertarget{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}\label{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}}
  1094. \index{utl\+::meta@{utl\+::meta}!negate@{negate}}
  1095. \index{negate@{negate}!utl\+::meta@{utl\+::meta}}
  1096. \subsubsection{\texorpdfstring{negate}{negate}}
  1097. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\
  1098. using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{utl\+::meta\+::negate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$}
  1099. Negation.
  1100. Math operations requires Integral\+Constant(\+\_\+\+Tp)
  1101. Definition at line 138 of file operations.\+h.
  1102. \mbox{\Hypertarget{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}\label{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}}
  1103. \index{utl\+::meta@{utl\+::meta}!none\+\_\+of@{none\+\_\+of}}
  1104. \index{none\+\_\+of@{none\+\_\+of}!utl\+::meta@{utl\+::meta}}
  1105. \subsubsection{\texorpdfstring{none\+\_\+of}{none\_of}}
  1106. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  1107. 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$>$ $>$}
  1108. 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}
  1109. \item[Examples\+: ]\par
  1110. \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}
  1111. Definition at line 875 of file typelist.\+h.
  1112. \mbox{\Hypertarget{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}\label{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}}
  1113. \index{utl\+::meta@{utl\+::meta}!Npos@{Npos}}
  1114. \index{Npos@{Npos}!utl\+::meta@{utl\+::meta}}
  1115. \subsubsection{\texorpdfstring{Npos}{Npos}}
  1116. {\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)$>$}
  1117. The last position we can express for indexing.
  1118. \begin{Desc}
  1119. \item[Examples\+: ]\par
  1120. \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}
  1121. Definition at line 124 of file integral.\+h.
  1122. \mbox{\Hypertarget{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}\label{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}}
  1123. \index{utl\+::meta@{utl\+::meta}!pair@{pair}}
  1124. \index{pair@{pair}!utl\+::meta@{utl\+::meta}}
  1125. \subsubsection{\texorpdfstring{pair}{pair}}
  1126. {\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\
  1127. using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{utl\+::meta\+::pair}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$T1, T2$>$}
  1128. pair A special typelist with only 2 Types \begin{Desc}
  1129. \item[Examples\+: ]\par
  1130. \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}
  1131. Definition at line 145 of file typelist.\+h.
  1132. \mbox{\Hypertarget{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}\label{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}}
  1133. \index{utl\+::meta@{utl\+::meta}!pop\+\_\+back@{pop\+\_\+back}}
  1134. \index{pop\+\_\+back@{pop\+\_\+back}!utl\+::meta@{utl\+::meta}}
  1135. \subsubsection{\texorpdfstring{pop\+\_\+back}{pop\_back}}
  1136. {\footnotesize\ttfamily template$<$typename List $>$ \\
  1137. 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$>$ $>$}
  1138. Return a new {\ttfamily typelist} by removing the last element from the {\ttfamily List}. Complexity $ O(N) $. \begin{DoxyNote}{Note}
  1139. This operation, in addition from other push/pop operations, is heavy(2 reverse operations).
  1140. \end{DoxyNote}
  1141. \begin{Desc}
  1142. \item[Examples\+: ]\par
  1143. \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}
  1144. Definition at line 526 of file typelist.\+h.
  1145. \mbox{\Hypertarget{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}\label{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}}
  1146. \index{utl\+::meta@{utl\+::meta}!pop\+\_\+front@{pop\+\_\+front}}
  1147. \index{pop\+\_\+front@{pop\+\_\+front}!utl\+::meta@{utl\+::meta}}
  1148. \subsubsection{\texorpdfstring{pop\+\_\+front}{pop\_front}}
  1149. {\footnotesize\ttfamily template$<$typename List $>$ \\
  1150. 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$>$ $>$}
  1151. Return a new {\ttfamily typelist} by removing the first element from the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc}
  1152. \item[Examples\+: ]\par
  1153. \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}
  1154. Definition at line 502 of file typelist.\+h.
  1155. \mbox{\Hypertarget{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}\label{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}}
  1156. \index{utl\+::meta@{utl\+::meta}!push\+\_\+back@{push\+\_\+back}}
  1157. \index{push\+\_\+back@{push\+\_\+back}!utl\+::meta@{utl\+::meta}}
  1158. \subsubsection{\texorpdfstring{push\+\_\+back}{push\_back}}
  1159. {\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\
  1160. 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 $>$ $>$}
  1161. Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the back of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc}
  1162. \item[Examples\+: ]\par
  1163. \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}
  1164. Definition at line 461 of file typelist.\+h.
  1165. \mbox{\Hypertarget{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}\label{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}}
  1166. \index{utl\+::meta@{utl\+::meta}!push\+\_\+front@{push\+\_\+front}}
  1167. \index{push\+\_\+front@{push\+\_\+front}!utl\+::meta@{utl\+::meta}}
  1168. \subsubsection{\texorpdfstring{push\+\_\+front}{push\_front}}
  1169. {\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\
  1170. 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 $>$ $>$}
  1171. Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc}
  1172. \item[Examples\+: ]\par
  1173. \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}
  1174. Definition at line 450 of file typelist.\+h.
  1175. \mbox{\Hypertarget{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}\label{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}}
  1176. \index{utl\+::meta@{utl\+::meta}!repeat@{repeat}}
  1177. \index{repeat@{repeat}!utl\+::meta@{utl\+::meta}}
  1178. \subsubsection{\texorpdfstring{repeat}{repeat}}
  1179. {\footnotesize\ttfamily template$<$typename N , typename ... Ts$>$ \\
  1180. using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{utl\+::meta\+::repeat}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}}$<$N\+::type\+::value, Ts...$>$}
  1181. A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integral\+\_\+c argument {\ttfamily N} \begin{Desc}
  1182. \item[Examples\+: ]\par
  1183. \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}
  1184. Definition at line 161 of file typelist.\+h.
  1185. \mbox{\Hypertarget{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}\label{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}}
  1186. \index{utl\+::meta@{utl\+::meta}!repeat\+\_\+c@{repeat\+\_\+c}}
  1187. \index{repeat\+\_\+c@{repeat\+\_\+c}!utl\+::meta@{utl\+::meta}}
  1188. \subsubsection{\texorpdfstring{repeat\+\_\+c}{repeat\_c}}
  1189. {\footnotesize\ttfamily template$<$size\+\_\+t N, typename ... Ts$>$ \\
  1190. 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$>$}
  1191. repeat
  1192. A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integer argument {\ttfamily N} \begin{Desc}
  1193. \item[Examples\+: ]\par
  1194. \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}
  1195. Definition at line 155 of file typelist.\+h.
  1196. \mbox{\Hypertarget{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}\label{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}}
  1197. \index{utl\+::meta@{utl\+::meta}!replace@{replace}}
  1198. \index{replace@{replace}!utl\+::meta@{utl\+::meta}}
  1199. \subsubsection{\texorpdfstring{replace}{replace}}
  1200. {\footnotesize\ttfamily template$<$typename List , typename T , typename U $>$ \\
  1201. 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$>$ $>$}
  1202. Alias wrapper that returns a new {\ttfamily typelist} where all instances of type {\ttfamily T} have been replaced with {\ttfamily U}. \begin{Desc}
  1203. \item[Examples\+: ]\par
  1204. \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}
  1205. Definition at line 848 of file typelist.\+h.
  1206. \mbox{\Hypertarget{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}\label{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}}
  1207. \index{utl\+::meta@{utl\+::meta}!replace\+\_\+if@{replace\+\_\+if}}
  1208. \index{replace\+\_\+if@{replace\+\_\+if}!utl\+::meta@{utl\+::meta}}
  1209. \subsubsection{\texorpdfstring{replace\+\_\+if}{replace\_if}}
  1210. {\footnotesize\ttfamily template$<$typename List , typename Pred , typename T $>$ \\
  1211. 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}}$<$$>$ $>$ $>$}
  1212. Return a new typelist where all the instances for which the invocation of{\ttfamily Pred} returns {\ttfamily true\+\_\+}, are replaced with {\ttfamily T}
  1213. Complexity $ O(N) $
  1214. \begin{DoxyParams}{Parameters}
  1215. {\em List} & The input typelist \\
  1216. \hline
  1217. {\em Pred} & A unary invocable predicate \\
  1218. \hline
  1219. {\em T} & The new type to replace the item of the {\ttfamily List}, when eval$<$invoke$<$\+Pred, Item$>$$>$ returns {\ttfamily true\+\_\+} \\
  1220. \hline
  1221. \end{DoxyParams}
  1222. \begin{Desc}
  1223. \item[Examples\+: ]\par
  1224. \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}
  1225. Definition at line 841 of file typelist.\+h.
  1226. \mbox{\Hypertarget{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}\label{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}}
  1227. \index{utl\+::meta@{utl\+::meta}!rev\+\_\+fold@{rev\+\_\+fold}}
  1228. \index{rev\+\_\+fold@{rev\+\_\+fold}!utl\+::meta@{utl\+::meta}}
  1229. \subsubsection{\texorpdfstring{rev\+\_\+fold}{rev\_fold}}
  1230. {\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\
  1231. 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$>$ $>$}
  1232. \begin{Desc}
  1233. \item[Examples\+: ]\par
  1234. \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}
  1235. Definition at line 438 of file typelist.\+h.
  1236. \mbox{\Hypertarget{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}\label{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}}
  1237. \index{utl\+::meta@{utl\+::meta}!reverse@{reverse}}
  1238. \index{reverse@{reverse}!utl\+::meta@{utl\+::meta}}
  1239. \subsubsection{\texorpdfstring{reverse}{reverse}}
  1240. {\footnotesize\ttfamily template$<$typename List $>$ \\
  1241. 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$>$ $>$}
  1242. Return a new {\ttfamily typelist} by reversing the elements in the list {\ttfamily List}. Complexity $ O(N) $ \begin{Desc}
  1243. \item[Examples\+: ]\par
  1244. \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}
  1245. Definition at line 479 of file typelist.\+h.
  1246. \mbox{\Hypertarget{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}\label{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}}
  1247. \index{utl\+::meta@{utl\+::meta}!seek@{seek}}
  1248. \index{seek@{seek}!utl\+::meta@{utl\+::meta}}
  1249. \subsubsection{\texorpdfstring{seek}{seek}}
  1250. {\footnotesize\ttfamily template$<$typename List , typename T $>$ \\
  1251. 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$>$ $>$}
  1252. 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}
  1253. \item[Examples\+: ]\par
  1254. \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}
  1255. Definition at line 711 of file typelist.\+h.
  1256. \mbox{\Hypertarget{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}\label{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}}
  1257. \index{utl\+::meta@{utl\+::meta}!seek\+\_\+if@{seek\+\_\+if}}
  1258. \index{seek\+\_\+if@{seek\+\_\+if}!utl\+::meta@{utl\+::meta}}
  1259. \subsubsection{\texorpdfstring{seek\+\_\+if}{seek\_if}}
  1260. {\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\
  1261. 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$>$ $>$}
  1262. 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
  1263. Complexity $ O(N) $
  1264. \begin{DoxyParams}{Parameters}
  1265. {\em List} & A typelist \\
  1266. \hline
  1267. {\em Pred} & A Unary invocable predicate \\
  1268. \hline
  1269. \end{DoxyParams}
  1270. \begin{DoxyReturn}{Returns}
  1271. An integral constant with the location of the first match, on Npos otherwise
  1272. \end{DoxyReturn}
  1273. \begin{Desc}
  1274. \item[Examples\+: ]\par
  1275. \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}
  1276. Definition at line 705 of file typelist.\+h.
  1277. \mbox{\Hypertarget{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}\label{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}}
  1278. \index{utl\+::meta@{utl\+::meta}!shift\+\_\+left@{shift\+\_\+left}}
  1279. \index{shift\+\_\+left@{shift\+\_\+left}!utl\+::meta@{utl\+::meta}}
  1280. \subsubsection{\texorpdfstring{shift\+\_\+left}{shift\_left}}
  1281. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\
  1282. 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())$>$}
  1283. \begin{DoxyReturn}{Returns}
  1284. the result of bitwise shift left ($<$$<$) operation on \+\_\+\+Tp.
  1285. \end{DoxyReturn}
  1286. Definition at line 218 of file operations.\+h.
  1287. \mbox{\Hypertarget{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}\label{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}}
  1288. \index{utl\+::meta@{utl\+::meta}!shift\+\_\+right@{shift\+\_\+right}}
  1289. \index{shift\+\_\+right@{shift\+\_\+right}!utl\+::meta@{utl\+::meta}}
  1290. \subsubsection{\texorpdfstring{shift\+\_\+right}{shift\_right}}
  1291. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\
  1292. 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())$>$}
  1293. \begin{DoxyReturn}{Returns}
  1294. the result of bitwise shift right ($>$$>$) operation on \+\_\+\+Tp.
  1295. \end{DoxyReturn}
  1296. Definition at line 221 of file operations.\+h.
  1297. \mbox{\Hypertarget{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}\label{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}}
  1298. \index{utl\+::meta@{utl\+::meta}!size@{size}}
  1299. \index{size@{size}!utl\+::meta@{utl\+::meta}}
  1300. \subsubsection{\texorpdfstring{size}{size}}
  1301. {\footnotesize\ttfamily template$<$typename List $>$ \\
  1302. using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{utl\+::meta\+::size}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$List\+::size()$>$}
  1303. An integral constant wrapper that is the size of the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}}
  1304. Complexity $ O(1) $.
  1305. \begin{DoxyParams}{Parameters}
  1306. {\em List} & A typelist \\
  1307. \hline
  1308. \end{DoxyParams}
  1309. \begin{DoxyReturn}{Returns}
  1310. The size of the typelist
  1311. \end{DoxyReturn}
  1312. \begin{Desc}
  1313. \item[Examples\+: ]\par
  1314. \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}
  1315. Definition at line 129 of file typelist.\+h.
  1316. \mbox{\Hypertarget{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}\label{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}}
  1317. \index{utl\+::meta@{utl\+::meta}!size\+\_\+@{size\+\_\+}}
  1318. \index{size\+\_\+@{size\+\_\+}!utl\+::meta@{utl\+::meta}}
  1319. \subsubsection{\texorpdfstring{size\+\_\+}{size\_}}
  1320. {\footnotesize\ttfamily template$<$size\+\_\+t v$>$ \\
  1321. 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$>$}
  1322. size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t
  1323. Definition at line 110 of file integral.\+h.
  1324. \mbox{\Hypertarget{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}\label{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}}
  1325. \index{utl\+::meta@{utl\+::meta}!sizeof\+\_\+@{sizeof\+\_\+}}
  1326. \index{sizeof\+\_\+@{sizeof\+\_\+}!utl\+::meta@{utl\+::meta}}
  1327. \subsubsection{\texorpdfstring{sizeof\+\_\+}{sizeof\_}}
  1328. {\footnotesize\ttfamily template$<$typename Tp $>$ \\
  1329. using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{utl\+::meta\+::sizeof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$sizeof(Tp)$>$}
  1330. Computes the size of the type {\ttfamily Tp}. Complexity $ O(1) $.
  1331. Definition at line 115 of file integral.\+h.
  1332. \mbox{\Hypertarget{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}\label{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}}
  1333. \index{utl\+::meta@{utl\+::meta}!sub@{sub}}
  1334. \index{sub@{sub}!utl\+::meta@{utl\+::meta}}
  1335. \subsubsection{\texorpdfstring{sub}{sub}}
  1336. {\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\
  1337. 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$>$ $>$}
  1338. Substruction.
  1339. Definition at line 165 of file operations.\+h.
  1340. \mbox{\Hypertarget{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}\label{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}}
  1341. \index{utl\+::meta@{utl\+::meta}!transform@{transform}}
  1342. \index{transform@{transform}!utl\+::meta@{utl\+::meta}}
  1343. \subsubsection{\texorpdfstring{transform}{transform}}
  1344. {\footnotesize\ttfamily template$<$typename... Args$>$ \\
  1345. 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...$>$ $>$ $>$}
  1346. \begin{Desc}
  1347. \item[Examples\+: ]\par
  1348. \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}
  1349. Definition at line 568 of file typelist.\+h.
  1350. \mbox{\Hypertarget{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}\label{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}}
  1351. \index{utl\+::meta@{utl\+::meta}!transform\+\_\+lazy@{transform\+\_\+lazy}}
  1352. \index{transform\+\_\+lazy@{transform\+\_\+lazy}!utl\+::meta@{utl\+::meta}}
  1353. \subsubsection{\texorpdfstring{transform\+\_\+lazy}{transform\_lazy}}
  1354. {\footnotesize\ttfamily template$<$typename... Args$>$ \\
  1355. 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...$>$ $>$ $>$}
  1356. \begin{Desc}
  1357. \item[Examples\+: ]\par
  1358. \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}
  1359. Definition at line 614 of file typelist.\+h.
  1360. \mbox{\Hypertarget{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}\label{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}}
  1361. \index{utl\+::meta@{utl\+::meta}!true\+\_\+@{true\+\_\+}}
  1362. \index{true\+\_\+@{true\+\_\+}!utl\+::meta@{utl\+::meta}}
  1363. \subsubsection{\texorpdfstring{true\+\_\+}{true\_}}
  1364. {\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{utl\+::meta\+::true\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$true$>$}
  1365. The type used as a compile-\/time boolean with true value.
  1366. \begin{Desc}
  1367. \item[Examples\+: ]\par
  1368. \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}
  1369. Definition at line 68 of file integral.\+h.
  1370. \mbox{\Hypertarget{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}\label{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}}
  1371. \index{utl\+::meta@{utl\+::meta}!uint16\+\_\+@{uint16\+\_\+}}
  1372. \index{uint16\+\_\+@{uint16\+\_\+}!utl\+::meta@{utl\+::meta}}
  1373. \subsubsection{\texorpdfstring{uint16\+\_\+}{uint16\_}}
  1374. {\footnotesize\ttfamily template$<$uint16\+\_\+t v$>$ \\
  1375. using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{utl\+::meta\+::uint16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint16\+\_\+t, v$>$}
  1376. uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t}
  1377. Definition at line 83 of file integral.\+h.
  1378. \mbox{\Hypertarget{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}\label{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}}
  1379. \index{utl\+::meta@{utl\+::meta}!uint32\+\_\+@{uint32\+\_\+}}
  1380. \index{uint32\+\_\+@{uint32\+\_\+}!utl\+::meta@{utl\+::meta}}
  1381. \subsubsection{\texorpdfstring{uint32\+\_\+}{uint32\_}}
  1382. {\footnotesize\ttfamily template$<$uint32\+\_\+t v$>$ \\
  1383. using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{utl\+::meta\+::uint32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint32\+\_\+t, v$>$}
  1384. uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t}
  1385. Definition at line 90 of file integral.\+h.
  1386. \mbox{\Hypertarget{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}\label{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}}
  1387. \index{utl\+::meta@{utl\+::meta}!uint8\+\_\+@{uint8\+\_\+}}
  1388. \index{uint8\+\_\+@{uint8\+\_\+}!utl\+::meta@{utl\+::meta}}
  1389. \subsubsection{\texorpdfstring{uint8\+\_\+}{uint8\_}}
  1390. {\footnotesize\ttfamily template$<$uint8\+\_\+t v$>$ \\
  1391. using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{utl\+::meta\+::uint8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint8\+\_\+t, v$>$}
  1392. uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t}
  1393. Definition at line 76 of file integral.\+h.
  1394. \mbox{\Hypertarget{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}\label{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}}
  1395. \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}}
  1396. \index{use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}!utl\+::meta@{utl\+::meta}}
  1397. \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+all\+\_\+t}{use\_if\_all\_t}}
  1398. {\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\
  1399. 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 $>$}
  1400. If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE.
  1401. Definition at line 56 of file useif.\+h.
  1402. \mbox{\Hypertarget{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}\label{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}}
  1403. \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}}
  1404. \index{use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}!utl\+::meta@{utl\+::meta}}
  1405. \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+any\+\_\+t}{use\_if\_any\_t}}
  1406. {\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\
  1407. 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 $>$}
  1408. If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE.
  1409. Definition at line 50 of file useif.\+h.
  1410. \mbox{\Hypertarget{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}\label{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}}
  1411. \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}}
  1412. \index{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}}
  1413. \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}{use\_if\_not\_same\_t}}
  1414. {\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\
  1415. 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 $>$}
  1416. If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE.
  1417. Definition at line 45 of file useif.\+h.
  1418. \mbox{\Hypertarget{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}\label{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}}
  1419. \index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}}
  1420. \index{use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}}
  1421. \subsubsection{\texorpdfstring{use\+\_\+if\+\_\+same\+\_\+t}{use\_if\_same\_t}}
  1422. {\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\
  1423. 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 $>$}
  1424. If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE.
  1425. Definition at line 40 of file useif.\+h.
  1426. \mbox{\Hypertarget{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}\label{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}}
  1427. \index{utl\+::meta@{utl\+::meta}!when@{when}}
  1428. \index{when@{when}!utl\+::meta@{utl\+::meta}}
  1429. \subsubsection{\texorpdfstring{when}{when}}
  1430. {\footnotesize\ttfamily template$<$bool If$>$ \\
  1431. 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$>$ $>$}
  1432. Well formed only if {\ttfamily If} is true.
  1433. Definition at line 46 of file sfinae.\+h.
  1434. \subsection{Variable Documentation}
  1435. \mbox{\Hypertarget{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}\label{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}}
  1436. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}}
  1437. \index{is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}!utl\+::meta@{utl\+::meta}}
  1438. \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible\+\_\+v}{is\_detected\_convertible\_v}}
  1439. {\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1440. constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+convertible\+\_\+v}
  1441. {\bfseries Initial value\+:}
  1442. \begin{DoxyCode}
  1443. =
  1444. \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\_detected\_convertible}}<To, Op, Args...>::value
  1445. \end{DoxyCode}
  1446. evaluates to true if evaluation of Op$<$\+Args...$>$ is convertible to {\ttfamily To} and to false if not \begin{Desc}
  1447. \item[Examples\+: ]\par
  1448. \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}
  1449. Definition at line 237 of file detection.\+h.
  1450. \mbox{\Hypertarget{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}\label{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}}
  1451. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}}
  1452. \index{is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}!utl\+::meta@{utl\+::meta}}
  1453. \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact\+\_\+v}{is\_detected\_exact\_v}}
  1454. {\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1455. constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+exact\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}}$<$ Expected, Op, Args...$>$\+::value}
  1456. evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not
  1457. \begin{Desc}
  1458. \item[Examples\+: ]\par
  1459. \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}
  1460. Definition at line 204 of file detection.\+h.
  1461. \mbox{\Hypertarget{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}\label{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}}
  1462. \index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}}
  1463. \index{is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}!utl\+::meta@{utl\+::meta}}
  1464. \subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+v}{is\_detected\_v}}
  1465. {\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\
  1466. constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}}$<$Op, Args...$>$\+::value}
  1467. Detection predicate.
  1468. \begin{Desc}
  1469. \item[Examples\+: ]\par
  1470. \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}
  1471. Definition at line 122 of file detection.\+h.