uTL
micro Template library
utl::detail Namespace Reference

Classes

struct  invoke_result_
 
struct  invoke_result_< true, _Callable, _Args... >
 
struct  is_ref_wrapper
 
struct  is_ref_wrapper< std::reference_wrapper< U > >
 
struct  try_invoke
 

Typedefs

template<typename I >
using try_ppI = decltype(++(std::declval< I >()))
 
template<typename I >
using try_Ipp = decltype(std::declval< I >()++)
 

Functions

template<class T , class Type , class T1 , class... Args, meta::enable_if_t< std::is_member_function_pointer< std::decay_t< Type T::*>>::value &&std::is_base_of< T, std::decay_t< T1 >>::value, int > = 0>
decltype(auto) invoke_impl_ (Type T::*f, T1 &&t1, Args &&... args)
 
template<class F , class... Args>
decltype(auto) invoke_impl_ (F &&f, Args &&... args)
 

Detailed Description

invoke_result (SFINAE friendly)

Typedef Documentation

◆ try_Ipp

template<typename I >
using utl::detail::try_Ipp = typedef decltype (std::declval<I>()++)

Definition at line 46 of file iterators.h.

◆ try_ppI

template<typename I >
using utl::detail::try_ppI = typedef decltype (++(std::declval<I>()))

Definition at line 45 of file iterators.h.

Function Documentation

◆ invoke_impl_() [1/2]

template<class T , class Type , class T1 , class... Args, meta::enable_if_t< std::is_member_function_pointer< std::decay_t< Type T::*>>::value &&std::is_base_of< T, std::decay_t< T1 >>::value, int > = 0>
decltype(auto) utl::detail::invoke_impl_ ( Type T::*  f,
T1 &&  t1,
Args &&...  args 
)

Definition at line 51 of file invoke.h.

◆ invoke_impl_() [2/2]

template<class F , class... Args>
decltype(auto) utl::detail::invoke_impl_ ( F &&  f,
Args &&...  args 
)

Definition at line 113 of file invoke.h.