proxygen
Invoke.h File Reference
#include <functional>
#include <type_traits>
#include <folly/Preprocessor.h>
#include <folly/Traits.h>

Go to the source code of this file.

Classes

struct  folly::invoke_detail::invoke_nothrow_< F, Args >
 
struct  folly::invoke_detail::invoke_result< Void, F, Args >
 
struct  folly::invoke_detail::invoke_result< void_t< invoke_result_< F, Args... > >, F, Args... >
 
struct  folly::invoke_detail::is_invocable< Void, F, Args >
 
struct  folly::invoke_detail::is_invocable< void_t< invoke_result_< F, Args... > >, F, Args... >
 
struct  folly::invoke_detail::is_invocable_r< Void, R, F, Args >
 
struct  folly::invoke_detail::is_invocable_r< void_t< invoke_result_< F, Args... > >, R, F, Args... >
 
struct  folly::invoke_detail::is_nothrow_invocable< Void, F, Args >
 
struct  folly::invoke_detail::is_nothrow_invocable< void_t< invoke_result_< F, Args... > >, F, Args... >
 
struct  folly::invoke_detail::is_nothrow_invocable_r< Void, R, F, Args >
 
struct  folly::invoke_detail::is_nothrow_invocable_r< void_t< invoke_result_< F, Args... > >, R, F, Args... >
 
struct  folly::invoke_result< F, Args >
 
struct  folly::is_invocable< F, Args >
 
struct  folly::is_invocable_r< R, F, Args >
 
struct  folly::is_nothrow_invocable< F, Args >
 
struct  folly::is_nothrow_invocable_r< R, F, Args >
 
struct  folly::detail::free_invoke_proxy< Invoke >
 
struct  folly::detail::free_invoke_proxy< Invoke >::invoke_result< Args >
 
struct  folly::detail::free_invoke_proxy< Invoke >::is_invocable< Args >
 
struct  folly::detail::free_invoke_proxy< Invoke >::is_invocable_r< R, Args >
 
struct  folly::detail::free_invoke_proxy< Invoke >::is_nothrow_invocable< Args >
 
struct  folly::detail::free_invoke_proxy< Invoke >::is_nothrow_invocable_r< R, Args >
 
struct  folly::detail::member_invoke_proxy< Invoke >
 
struct  folly::detail::member_invoke_proxy< Invoke >::invoke_result< O, Args >
 
struct  folly::detail::member_invoke_proxy< Invoke >::is_invocable< O, Args >
 
struct  folly::detail::member_invoke_proxy< Invoke >::is_invocable_r< R, O, Args >
 
struct  folly::detail::member_invoke_proxy< Invoke >::is_nothrow_invocable< O, Args >
 
struct  folly::detail::member_invoke_proxy< Invoke >::is_nothrow_invocable_r< R, O, Args >
 

Namespaces

 folly
 —— Concurrent Priority Queue Implementation ——
 
 folly::invoke_detail
 
 folly::detail
 

Macros

#define FOLLY_CREATE_FREE_INVOKE_TRAITS(classname, funcname, ...)
 
#define FOLLY_CREATE_MEMBER_INVOKE_TRAITS(classname, membername)
 

Typedefs

template<typename F , typename... Args>
using folly::invoke_detail::invoke_result_ = decltype(invoke(std::declval< F >(), std::declval< Args >()...))
 
template<typename F , typename... Args>
using folly::invoke_result_t = typename invoke_result< F, Args... >::type
 

Functions

template<typename F , typename... Args>
constexpr auto folly::invoke (F &&f, Args &&...args) noexcept(noexcept(static_cast< F && >(f)(static_cast< Args && >(args)...))) -> decltype(static_cast< F && >(f)(static_cast< Args && >(args)...))
 
template<typename M , typename C , typename... Args>
constexpr auto folly::invoke (M(C::*d), Args &&...args) -> decltype(std::mem_fn(d)(static_cast< Args && >(args)...))
 

Macro Definition Documentation

#define FOLLY_CREATE_FREE_INVOKE_TRAITS (   classname,
  funcname,
  ... 
)
Value:
namespace classname##__folly_detail_invoke_ns { \
namespace classname##__folly_detail_invoke_ns_inline { \
FOLLY_CLANG_DISABLE_WARNING("-Wunused-function") \
void funcname(::folly::detail::invoke_private_overload&); \
} \
using FB_ARG_2_OR_1( \
classname##__folly_detail_invoke_ns_inline \
FOLLY_PP_DETAIL_APPEND_VA_ARG(__VA_ARGS__))::funcname; \
struct classname##__folly_detail_invoke { \
template <typename... Args> \
constexpr auto operator()(Args&&... args) const \
noexcept(noexcept(funcname(static_cast<Args&&>(args)...))) \
-> decltype(funcname(static_cast<Args&&>(args)...)) { \
return funcname(static_cast<Args&&>(args)...); \
} \
}; \
} \
struct classname : ::folly::detail::free_invoke_proxy< \
classname##__folly_detail_invoke_ns:: \
classname##__folly_detail_invoke> {}
#define FOLLY_POP_WARNING
Definition: Portability.h:179
#define FB_ARG_2_OR_1(...)
Definition: Preprocessor.h:54
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
requires E e noexcept(noexcept(s.error(std::move(e))))
const
Definition: upload.py:398
#define FOLLY_CLANG_DISABLE_WARNING(warningName)
Definition: Portability.h:182
#define FOLLY_PP_DETAIL_APPEND_VA_ARG(...)
Definition: Preprocessor.h:70

Definition at line 283 of file Invoke.h.

#define FOLLY_CREATE_MEMBER_INVOKE_TRAITS (   classname,
  membername 
)
Value:
struct classname##__folly_detail_member_invoke { \
template <typename O, typename... Args> \
constexpr auto operator()(O&& o, Args&&... args) const noexcept(noexcept( \
static_cast<O&&>(o).membername(static_cast<Args&&>(args)...))) \
-> decltype( \
static_cast<O&&>(o).membername(static_cast<Args&&>(args)...)) { \
return static_cast<O&&>(o).membername(static_cast<Args&&>(args)...); \
} \
}; \
classname##__folly_detail_member_invoke> {}
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
requires E e noexcept(noexcept(s.error(std::move(e))))
const
Definition: upload.py:398

Definition at line 402 of file Invoke.h.