proxygen
folly::detail::function::FunctionTraits< ReturnType(Args...)> Struct Template Reference

#include <Function.h>

Classes

class  SharedProxy
 

Public Types

using Call = ReturnType(*)(Data &, Args &&...)
 
using IsConst = std::false_type
 
using ConstSignature = ReturnType(Args...) const
 
using NonConstSignature = ReturnType(Args...)
 
using OtherSignature = ConstSignature
 
template<typename F >
using ResultOf = SafeResultOf< CallableResult< _t< std::decay< F >> &, Args... >, ReturnType >
 

Public Member Functions

ReturnType operator() (Args...args)
 

Static Public Member Functions

template<typename Fun >
static ReturnType callSmall (Data &p, Args &&...args)
 
template<typename Fun >
static ReturnType callBig (Data &p, Args &&...args)
 
static ReturnType uninitCall (Data &, Args &&...)
 

Detailed Description

template<typename ReturnType, typename... Args>
struct folly::detail::function::FunctionTraits< ReturnType(Args...)>

Definition at line 299 of file Function.h.

Member Typedef Documentation

template<typename ReturnType , typename... Args>
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::Call = ReturnType (*)(Data&, Args&&...)

Definition at line 300 of file Function.h.

template<typename ReturnType , typename... Args>
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::ConstSignature = ReturnType(Args...) const

Definition at line 302 of file Function.h.

template<typename ReturnType , typename... Args>
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::IsConst = std::false_type

Definition at line 301 of file Function.h.

template<typename ReturnType , typename... Args>
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::NonConstSignature = ReturnType(Args...)

Definition at line 303 of file Function.h.

template<typename ReturnType , typename... Args>
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::OtherSignature = ConstSignature

Definition at line 304 of file Function.h.

template<typename ReturnType , typename... Args>
template<typename F >
using folly::detail::function::FunctionTraits< ReturnType(Args...)>::ResultOf = SafeResultOf<CallableResult<_t<std::decay<F>>&, Args...>, ReturnType>

Definition at line 308 of file Function.h.

Member Function Documentation

template<typename ReturnType , typename... Args>
template<typename Fun >
static ReturnType folly::detail::function::FunctionTraits< ReturnType(Args...)>::callBig ( Data p,
Args &&...  args 
)
inlinestatic

Definition at line 317 of file Function.h.

References testing::Args(), and folly::detail::function::Data::big.

317  {
318  return static_cast<ReturnType>(
319  (*static_cast<Fun*>(p.big))(static_cast<Args&&>(args)...));
320  }
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
template<typename ReturnType , typename... Args>
template<typename Fun >
static ReturnType folly::detail::function::FunctionTraits< ReturnType(Args...)>::callSmall ( Data p,
Args &&...  args 
)
inlinestatic

Definition at line 311 of file Function.h.

References folly::detail::function::Data::tiny.

311  {
312  return static_cast<ReturnType>((*static_cast<Fun*>(
313  static_cast<void*>(&p.tiny)))(static_cast<Args&&>(args)...));
314  }
template<typename ReturnType , typename... Args>
ReturnType folly::detail::function::FunctionTraits< ReturnType(Args...)>::operator() ( Args...  args)
inline

Definition at line 326 of file Function.h.

References folly::Function< FunctionType >::call_.

326  {
327  auto& fn = *static_cast<Function<NonConstSignature>*>(this);
328  return fn.call_(fn.data_, static_cast<Args&&>(args)...);
329  }
A polymorphic function wrapper that is not copyable and does not require the wrapped function to be c...
template<typename ReturnType , typename... Args>
static ReturnType folly::detail::function::FunctionTraits< ReturnType(Args...)>::uninitCall ( Data ,
Args &&  ... 
)
inlinestatic

Definition at line 322 of file Function.h.

322  {
323  throw std::bad_function_call();
324  }

The documentation for this struct was generated from the following file: