Micro template library A library for building device drivers
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

227 linhas
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/}.