Micro template library A library for building device drivers
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

utility_2invoke_8h.tex 5.1 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. \hypertarget{utility_2invoke_8h}{}\section{include/utl/utility/invoke.h File Reference}
  2. \label{utility_2invoke_8h}\index{include/utl/utility/invoke.\+h@{include/utl/utility/invoke.\+h}}
  3. \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke()}} and invoke traits implementation
  4. {\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline
  5. {\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline
  6. {\ttfamily \#include $<$type\+\_\+traits$>$}\newline
  7. {\ttfamily \#include $<$functional$>$}\newline
  8. {\ttfamily \#include $<$utility$>$}\newline
  9. \subsection*{Classes}
  10. \begin{DoxyCompactItemize}
  11. \item
  12. struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$}}
  13. \item
  14. struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}}
  15. \item
  16. struct \mbox{\hyperlink{structutl_1_1is__invocable}{utl\+::is\+\_\+invocable$<$ F, Args $>$}}
  17. \begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable trait for C++11 \end{DoxyCompactList}\item
  18. struct \mbox{\hyperlink{structutl_1_1is__invocable__r}{utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$}}
  19. \begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable\+\_\+r trait for C++11 \end{DoxyCompactList}\item
  20. struct \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$}}
  21. \item
  22. struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$}}
  23. \item
  24. struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}}
  25. \end{DoxyCompactItemize}
  26. \subsection*{Namespaces}
  27. \begin{DoxyCompactItemize}
  28. \item
  29. \mbox{\hyperlink{namespaceutl}{utl}}
  30. \begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item
  31. \mbox{\hyperlink{namespaceutl_1_1detail}{utl\+::detail}}
  32. \end{DoxyCompactItemize}
  33. \subsection*{Typedefs}
  34. \textbf{ }\par
  35. \begin{DoxyCompactItemize}
  36. \item
  37. {\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{utl\+::invoke\+\_\+result}} = detail\+::invoke\+\_\+result\+\_\+$<$ is\+\_\+invocable$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$\+::value, \+\_\+\+Callable, \+\_\+\+Args... $>$
  38. \begin{DoxyCompactList}\small\item\em invoke\+\_\+result (for C++14) \end{DoxyCompactList}\item
  39. {\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_ae40494acc30f2894c74544f3e9142933}{utl\+::invoke\+\_\+result\+\_\+t}} = meta\+::eval$<$ invoke\+\_\+result$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$ $>$
  40. \begin{DoxyCompactList}\small\item\em invoke\+\_\+result\+\_\+t (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize}
  41. \subsection*{Functions}
  42. \begin{DoxyCompactItemize}
  43. \item
  44. {\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}{utl\+::detail\+::invoke\+\_\+impl\+\_\+}} (Type T\+::$\ast$f, T1 \&\&t1, Args \&\&... args)
  45. \item
  46. {\footnotesize template$<$class F , class... Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}{utl\+::detail\+::invoke\+\_\+impl\+\_\+}} (F \&\&f, Args \&\&... args)
  47. \item
  48. {\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{utl\+::invoke}} (\+\_\+\+Callable \&\&fn, \+\_\+\+Args \&\&... args)
  49. \begin{DoxyCompactList}\small\item\em Invoke a callable object (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize}
  50. \subsection{Detailed Description}
  51. \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke()}} and invoke traits implementation
  52. Copyright (C) 2018-\/2019 Christos Choutouridis
  53. 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.
  54. 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 detail.
  55. 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/}.