\hypertarget{stl_8h}{}\section{include/utl/concepts/stl.h File Reference}
\label{stl_8h}\index{include/utl/concepts/stl.\+h@{include/utl/concepts/stl.\+h}}


S\+TL\textquotesingle{}s Concepts.  


{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline
{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline
{\ttfamily \#include $<$utl/utility/invoke.\+h$>$}\newline
{\ttfamily \#include $<$utl/concepts/defines.\+h$>$}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}}
\item 
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 $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}}
\item 
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 $>$ $>$ $>$}}
\item 
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 $>$ $>$ $>$ $>$ $>$}}
\item 
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 \& $>$ $>$ $>$ $>$ $>$}}
\item 
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 \& $>$ $>$ $>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}}
\item 
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 $>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}}
\item 
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 $>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}}
\item 
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 $>$ $>$}}
\item 
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 $>$}}
\item 
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... $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$}}
\item 
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 $>$$>$())$>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}}
\item 
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 $>$$>$())$>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}}
\item 
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 $>$$>$())$>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}}
\item 
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 $>$$>$())$>$ $>$ $>$}}
\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \mbox{\hyperlink{namespaceutl}{utl}}
\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item 
 \mbox{\hyperlink{namespaceutl_1_1common__impl}{utl\+::common\+\_\+impl}}
\item 
 \mbox{\hyperlink{namespaceutl_1_1details}{utl\+::details}}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{utl\+::remove\+\_\+cvref\+\_\+t}} = std\+::remove\+\_\+cv\+\_\+t$<$ std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$
\item 
{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{utl\+::cref\+\_\+}} = const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ \&
\item 
{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}{utl\+::\+\_\+ref\+\_\+t}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ T $>$
\item 
{\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 $>$ $>$
\item 
{\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(\&)()$>$()())
\item 
{\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 $>$
\item 
{\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 $>$ $>$
\item 
{\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 $>$ $>$
\item 
{\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 $>$ \&$>$
\item 
{\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 $>$ \&\&
\item 
{\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 $>$ $>$
\item 
{\footnotesize template$<$class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}{utl\+::common\+\_\+impl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$
\item 
{\footnotesize template$<$typename B $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}{utl\+::details\+::is\+\_\+boolean\+\_\+t}} = meta\+::eval$<$ is\+\_\+boolean\+\_\+$<$ B $>$ $>$
\item 
{\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 $>$ $>$
\item 
{\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 $>$ $>$
\item 
{\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 $>$ $>$
\end{DoxyCompactItemize}
\textbf{ }\par
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{utl\+::common\+\_\+reference}} = common\+\_\+impl\+::common\+\_\+reference$<$ Ts... $>$
\item 
{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}{utl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$
\end{DoxyCompactItemize}

\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}{utl\+::\+Same}} = meta\+::same\+\_\+$<$T, U$>$\+::value
\item 
{\footnotesize template$<$class Derived , class Base $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}{utl\+::\+Derived\+From}}
\item 
{\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
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1cc37f121888dcc030b8e676b077024f}{utl\+::\+Common\+Reference}}
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}{utl\+::\+Common}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{utl\+::\+Integral}} = std\+::is\+\_\+integral$<$T$>$\+::value
\item 
{\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
\item 
{\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
\item 
{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}{utl\+::\+Move\+Assignable}} = std\+::is\+\_\+move\+\_\+assignable$<$T$>$\+::value
\item 
{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}{utl\+::\+Copy\+Assignable}} = std\+::is\+\_\+copy\+\_\+assignable$<$T$>$\+::value
\item 
{\footnotesize template$<$class L\+HS , class R\+HS $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}{utl\+::\+Assignable}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}{utl\+::\+Destructible}} = std\+::is\+\_\+nothrow\+\_\+destructible$<$T$>$\+::value
\item 
{\footnotesize template$<$class T , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{utl\+::\+Constructible}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{utl\+::\+Default\+Constructible}} = Constructible$<$T$>$
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}{utl\+::\+Move\+Constructible}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afb0f121b33b44640406b724c4d582b70}{utl\+::\+Copy\+Constructible}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afc25cb525eb29162042c21238f28f26e}{utl\+::\+Movable}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{utl\+::\+Copyable}}
\item 
{\footnotesize template$<$class B $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}{utl\+::\+Boolean}}
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{utl\+::\+Weakly\+Equality\+Comparable\+With}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{utl\+::\+Equality\+Comparable}} = Weakly\+Equality\+Comparable\+With$<$T, T$>$
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}{utl\+::\+Equality\+Comparable\+With}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}{utl\+::\+Strict\+Totally\+Ordered}}
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}{utl\+::\+Strict\+Totally\+Ordered\+With}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{utl\+::\+Semiregular}} = Copyable$<$T$>$ \&\& Default\+Constructible$<$T$>$
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a3accaa436a17248b4214baebc582b2f6}{utl\+::\+Regular}} = Semiregular$<$T$>$ \&\& Equality\+Comparable$<$T$>$
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7f86c4bf42b13d9525481d731b194308}{utl\+::\+Scalar}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a41733496c30138efd3d88f13d9382aad}{utl\+::\+Arithmetic}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}{utl\+::\+Floating\+Point}}
\item 
{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{utl\+::\+Invocable}} = is\+\_\+invocable$<$F, Args...$>$\+::value
\item 
{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}{utl\+::\+Regular\+Invocable}} = Invocable$<$F, Args...$>$
\item 
{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aae56a019cdd2006c4f07d2e207289195}{utl\+::\+Predicate}}
\item 
{\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{utl\+::\+Relation}}
\item 
{\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$>$
\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
using \mbox{\hyperlink{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}{utl\+::is\+\_\+swappable}} = std\+::is\+\_\+swappable
\item 
using \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{utl\+::is\+\_\+swappable\+\_\+with}} = std\+::is\+\_\+swappable\+\_\+with
\item 
{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a4a3bb850ba59d499382bd11153104af7}{utl\+::\+Swappable\+With}}
\item 
{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}{utl\+::\+Swappable}} = is\+\_\+swappable\+\_\+with$<$T, T$>$\+::type\+::value
\end{DoxyCompactItemize}


\subsection{Detailed Description}
S\+TL\textquotesingle{}s Concepts. 

Copyright (C) 2018 -\/ 2019 Christos Choutouridis

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.

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.

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