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

227 lignes
27 KiB

  1. \hypertarget{stl_8h}{}\section{include/utl/concepts/stl.h File Reference}
  2. \label{stl_8h}\index{include/utl/concepts/stl.\+h@{include/utl/concepts/stl.\+h}}
  3. S\+TL\textquotesingle{}s Concepts.
  4. {\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline
  5. {\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline
  6. {\ttfamily \#include $<$utl/utility/invoke.\+h$>$}\newline
  7. {\ttfamily \#include $<$utl/concepts/defines.\+h$>$}\newline
  8. \subsection*{Classes}
  9. \begin{DoxyCompactItemize}
  10. \item
  11. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}}
  12. \item
  13. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}}
  14. \item
  15. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}}
  16. \item
  17. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}}
  18. \item
  19. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}}
  20. \item
  21. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}}
  22. \item
  23. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}}
  24. \item
  25. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}}
  26. \item
  27. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}}
  28. \item
  29. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$}}
  30. \item
  31. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}}
  32. \item
  33. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}}
  34. \item
  35. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}}
  36. \item
  37. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}}
  38. \item
  39. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}}
  40. \item
  41. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}}
  42. \item
  43. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$}}
  44. \item
  45. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}}
  46. \item
  47. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}}
  48. \item
  49. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}}
  50. \item
  51. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}}
  52. \item
  53. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}}
  54. \item
  55. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}}
  56. \item
  57. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}}
  58. \item
  59. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$}}
  60. \item
  61. struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$}}
  62. \item
  63. struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$}}
  64. \item
  65. struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}}
  66. \item
  67. struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}}
  68. \item
  69. struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}}
  70. \item
  71. struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}}
  72. \item
  73. struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}}
  74. \item
  75. struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}}
  76. \item
  77. struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}}
  78. \end{DoxyCompactItemize}
  79. \subsection*{Namespaces}
  80. \begin{DoxyCompactItemize}
  81. \item
  82. \mbox{\hyperlink{namespaceutl}{utl}}
  83. \begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item
  84. \mbox{\hyperlink{namespaceutl_1_1common__impl}{utl\+::common\+\_\+impl}}
  85. \item
  86. \mbox{\hyperlink{namespaceutl_1_1details}{utl\+::details}}
  87. \end{DoxyCompactItemize}
  88. \subsection*{Typedefs}
  89. \begin{DoxyCompactItemize}
  90. \item
  91. {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{utl\+::remove\+\_\+cvref\+\_\+t}} = std\+::remove\+\_\+cv\+\_\+t$<$ std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$
  92. \item
  93. {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{utl\+::cref\+\_\+}} = const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ \&
  94. \item
  95. {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}{utl\+::\+\_\+ref\+\_\+t}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ T $>$
  96. \item
  97. {\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}{utl\+::use\+\_\+if\+\_\+same\+\_\+t}} = meta\+::eval$<$ meta\+::enable\+\_\+if$<$ meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ $>$
  98. \item
  99. {\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cond\+\_\+res}} = decltype(false ? std\+::declval$<$ T(\&)()$>$()() \+:std\+::declval$<$ U(\&)()$>$()())
  100. \item
  101. {\footnotesize template$<$class From , class To $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv}} = meta\+::invoke$<$ \+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$, To $>$
  102. \item
  103. {\footnotesize template$<$class T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cref}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$
  104. \item
  105. {\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref}} = meta\+::eval$<$ \+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U $>$ $>$
  106. \item
  107. {\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+lref\+\_\+res}} = \+\_\+\+\_\+cond\+\_\+res$<$ \+\_\+\+\_\+copy\+\_\+cv$<$ T, U $>$ \&, \+\_\+\+\_\+copy\+\_\+cv$<$ U, T $>$ \&$>$
  108. \item
  109. {\footnotesize template$<$class T , class U , class R = \+\_\+\+\_\+common\+\_\+ref$<$\+T\&, U\&$>$$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+rref\+\_\+res}} = std\+::remove\+\_\+reference\+\_\+t$<$ R $>$ \&\&
  110. \item
  111. {\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ basic\+\_\+common\+\_\+reference$<$ remove\+\_\+cvref\+\_\+t$<$ T $>$, remove\+\_\+cvref\+\_\+t$<$ U $>$, \+\_\+\+\_\+xref$<$ T $>$\+::template apply, \+\_\+\+\_\+xref$<$ U $>$\+::template apply $>$ $>$
  112. \item
  113. {\footnotesize template$<$class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}{utl\+::common\+\_\+impl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$
  114. \item
  115. {\footnotesize template$<$typename B $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}{utl\+::details\+::is\+\_\+boolean\+\_\+t}} = meta\+::eval$<$ is\+\_\+boolean\+\_\+$<$ B $>$ $>$
  116. \item
  117. {\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}} = meta\+::eval$<$ is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U $>$ $>$
  118. \item
  119. {\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}} = meta\+::eval$<$ is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T $>$ $>$
  120. \item
  121. {\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}} = meta\+::eval$<$ is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U $>$ $>$
  122. \end{DoxyCompactItemize}
  123. \textbf{ }\par
  124. \begin{DoxyCompactItemize}
  125. \item
  126. {\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{utl\+::common\+\_\+reference}} = common\+\_\+impl\+::common\+\_\+reference$<$ Ts... $>$
  127. \item
  128. {\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}{utl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$
  129. \end{DoxyCompactItemize}
  130. \subsection*{Variables}
  131. \begin{DoxyCompactItemize}
  132. \item
  133. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}{utl\+::\+Same}} = meta\+::same\+\_\+$<$T, U$>$\+::value
  134. \item
  135. {\footnotesize template$<$class Derived , class Base $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}{utl\+::\+Derived\+From}}
  136. \item
  137. {\footnotesize template$<$class From , class To $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{utl\+::\+Convertible\+To}} = std\+::is\+\_\+convertible$<$From, To$>$\+::value
  138. \item
  139. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1cc37f121888dcc030b8e676b077024f}{utl\+::\+Common\+Reference}}
  140. \item
  141. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}{utl\+::\+Common}}
  142. \item
  143. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{utl\+::\+Integral}} = std\+::is\+\_\+integral$<$T$>$\+::value
  144. \item
  145. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a667b758d906c466d1b8a878a45750bf1}{utl\+::\+Signed\+Integral}} = Integral$<$T$>$ \&\& std\+::is\+\_\+signed$<$T$>$\+::value
  146. \item
  147. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7fb6eaf8fc1c5d65755c8c96a7a9b61f}{utl\+::\+Unsigned\+Integral}} = Integral$<$T$>$ \&\& !std\+::is\+\_\+signed$<$T$>$\+::value
  148. \item
  149. {\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}{utl\+::\+Move\+Assignable}} = std\+::is\+\_\+move\+\_\+assignable$<$T$>$\+::value
  150. \item
  151. {\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}{utl\+::\+Copy\+Assignable}} = std\+::is\+\_\+copy\+\_\+assignable$<$T$>$\+::value
  152. \item
  153. {\footnotesize template$<$class L\+HS , class R\+HS $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}{utl\+::\+Assignable}}
  154. \item
  155. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}{utl\+::\+Destructible}} = std\+::is\+\_\+nothrow\+\_\+destructible$<$T$>$\+::value
  156. \item
  157. {\footnotesize template$<$class T , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{utl\+::\+Constructible}}
  158. \item
  159. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{utl\+::\+Default\+Constructible}} = Constructible$<$T$>$
  160. \item
  161. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}{utl\+::\+Move\+Constructible}}
  162. \item
  163. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afb0f121b33b44640406b724c4d582b70}{utl\+::\+Copy\+Constructible}}
  164. \item
  165. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afc25cb525eb29162042c21238f28f26e}{utl\+::\+Movable}}
  166. \item
  167. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{utl\+::\+Copyable}}
  168. \item
  169. {\footnotesize template$<$class B $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}{utl\+::\+Boolean}}
  170. \item
  171. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{utl\+::\+Weakly\+Equality\+Comparable\+With}}
  172. \item
  173. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{utl\+::\+Equality\+Comparable}} = Weakly\+Equality\+Comparable\+With$<$T, T$>$
  174. \item
  175. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}{utl\+::\+Equality\+Comparable\+With}}
  176. \item
  177. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}{utl\+::\+Strict\+Totally\+Ordered}}
  178. \item
  179. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}{utl\+::\+Strict\+Totally\+Ordered\+With}}
  180. \item
  181. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{utl\+::\+Semiregular}} = Copyable$<$T$>$ \&\& Default\+Constructible$<$T$>$
  182. \item
  183. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a3accaa436a17248b4214baebc582b2f6}{utl\+::\+Regular}} = Semiregular$<$T$>$ \&\& Equality\+Comparable$<$T$>$
  184. \item
  185. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7f86c4bf42b13d9525481d731b194308}{utl\+::\+Scalar}}
  186. \item
  187. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a41733496c30138efd3d88f13d9382aad}{utl\+::\+Arithmetic}}
  188. \item
  189. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}{utl\+::\+Floating\+Point}}
  190. \item
  191. {\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{utl\+::\+Invocable}} = is\+\_\+invocable$<$F, Args...$>$\+::value
  192. \item
  193. {\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}{utl\+::\+Regular\+Invocable}} = Invocable$<$F, Args...$>$
  194. \item
  195. {\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aae56a019cdd2006c4f07d2e207289195}{utl\+::\+Predicate}}
  196. \item
  197. {\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{utl\+::\+Relation}}
  198. \item
  199. {\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa4b7b9105cfab3cd72865b5e0db23b11}{utl\+::\+Strict\+Weak\+Order}} = Relation$<$R, T, U$>$
  200. \end{DoxyCompactItemize}
  201. \begin{DoxyCompactItemize}
  202. \item
  203. using \mbox{\hyperlink{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}{utl\+::is\+\_\+swappable}} = std\+::is\+\_\+swappable
  204. \item
  205. using \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{utl\+::is\+\_\+swappable\+\_\+with}} = std\+::is\+\_\+swappable\+\_\+with
  206. \item
  207. {\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a4a3bb850ba59d499382bd11153104af7}{utl\+::\+Swappable\+With}}
  208. \item
  209. {\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}{utl\+::\+Swappable}} = is\+\_\+swappable\+\_\+with$<$T, T$>$\+::type\+::value
  210. \end{DoxyCompactItemize}
  211. \subsection{Detailed Description}
  212. S\+TL\textquotesingle{}s Concepts.
  213. Copyright (C) 2018 -\/ 2019 Christos Choutouridis
  214. This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  215. This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details.
  216. You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}.