\hypertarget{namespaceutl_1_1detail}{}\section{utl\+:\+:detail Namespace Reference}
\label{namespaceutl_1_1detail}\index{utl\+::detail@{utl\+::detail}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{invoke\+\_\+result\+\_\+}}
\item 
struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper}{is\+\_\+ref\+\_\+wrapper}}
\item 
struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}}
\item 
struct \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{try\+\_\+invoke}}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}{try\+\_\+ppI}} = decltype(++(std\+::declval$<$ I $>$()))
\item 
{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}{try\+\_\+\+Ipp}} = decltype(std\+::declval$<$ I $>$()++)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class T , class Type , class T1 , class... Args, meta\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ std\+::decay\+\_\+t$<$ Type T\+::$\ast$$>$$>$\+::value \&\&std\+::is\+\_\+base\+\_\+of$<$ T, std\+::decay\+\_\+t$<$ T1 $>$$>$\+::value, int $>$  = 0$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}{invoke\+\_\+impl\+\_\+}} (Type T\+::$\ast$f, T1 \&\&t1, Args \&\&... args)
\item 
{\footnotesize template$<$class F , class... Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}{invoke\+\_\+impl\+\_\+}} (F \&\&f, Args \&\&... args)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
invoke\+\_\+result (S\+F\+I\+N\+AE friendly) 

\subsection{Typedef Documentation}
\mbox{\Hypertarget{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}\label{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}} 
\index{utl\+::detail@{utl\+::detail}!try\+\_\+\+Ipp@{try\+\_\+\+Ipp}}
\index{try\+\_\+\+Ipp@{try\+\_\+\+Ipp}!utl\+::detail@{utl\+::detail}}
\subsubsection{\texorpdfstring{try\+\_\+\+Ipp}{try\_Ipp}}
{\footnotesize\ttfamily template$<$typename I $>$ \\
using \mbox{\hyperlink{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}{utl\+::detail\+::try\+\_\+\+Ipp}} = typedef decltype (std\+::declval$<$I$>$()++)}



Definition at line 46 of file iterators.\+h.

\mbox{\Hypertarget{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}\label{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}} 
\index{utl\+::detail@{utl\+::detail}!try\+\_\+ppI@{try\+\_\+ppI}}
\index{try\+\_\+ppI@{try\+\_\+ppI}!utl\+::detail@{utl\+::detail}}
\subsubsection{\texorpdfstring{try\+\_\+ppI}{try\_ppI}}
{\footnotesize\ttfamily template$<$typename I $>$ \\
using \mbox{\hyperlink{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}{utl\+::detail\+::try\+\_\+ppI}} = typedef decltype (++(std\+::declval$<$I$>$()))}



Definition at line 45 of file iterators.\+h.



\subsection{Function Documentation}
\mbox{\Hypertarget{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}\label{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}} 
\index{utl\+::detail@{utl\+::detail}!invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}}
\index{invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}!utl\+::detail@{utl\+::detail}}
\subsubsection{\texorpdfstring{invoke\+\_\+impl\+\_\+()}{invoke\_impl\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$class T , class Type , class T1 , class... Args, meta\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ std\+::decay\+\_\+t$<$ Type T\+::$\ast$$>$$>$\+::value \&\&std\+::is\+\_\+base\+\_\+of$<$ T, std\+::decay\+\_\+t$<$ T1 $>$$>$\+::value, int $>$  = 0$>$ \\
decltype(auto) utl\+::detail\+::invoke\+\_\+impl\+\_\+ (\begin{DoxyParamCaption}\item[{Type T\+::$\ast$}]{f,  }\item[{T1 \&\&}]{t1,  }\item[{Args \&\&...}]{args }\end{DoxyParamCaption})}



Definition at line 51 of file invoke.\+h.

\mbox{\Hypertarget{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}\label{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}} 
\index{utl\+::detail@{utl\+::detail}!invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}}
\index{invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}!utl\+::detail@{utl\+::detail}}
\subsubsection{\texorpdfstring{invoke\+\_\+impl\+\_\+()}{invoke\_impl\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$class F , class... Args$>$ \\
decltype(auto) utl\+::detail\+::invoke\+\_\+impl\+\_\+ (\begin{DoxyParamCaption}\item[{F \&\&}]{f,  }\item[{Args \&\&...}]{args }\end{DoxyParamCaption})}



Definition at line 113 of file invoke.\+h.

