Micro template library A library for building device drivers
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

2084 líneas
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.