This struct provides a mechanism for inferring various traits of the function object type t_FUNC. The return type is given by t_RET unless it is bslmf::Nil in which case it is inferred from t_FUNC. The last three parameters IS_FUNCTION, IS_FUNCTION_POINTER and IS_MEMBER_FUNCTION_POINTER specify whether t_FUNC is a free function type (either a reference-to-function or plain function type), a pointer to function type, or a pointer to member function type, respectively.
Declared in <bdlf_bind.h>
template<
class t_RET,
class t_FUNC,
int IS_FUNCTION,
int IS_FUNCTION_POINTER,
int IS_MEMBER_FUNCTION_POINTER>
struct Bind_FuncTraitsImp;
Only specializations of this class should be used (given below). All specializations define the types and enumerations documented in the Bind_FuncTraits below.
| Name | Description |
|---|---|
Bind_FuncTraitsImp<bslmf::Nil, t_FUNC, 0, 0, 0> | Function traits for function objects that are passed by value without explicit result type specification. The result type is determined by either typename t_FUNC::result_type or typename t_FUNC::ResultType, with the former taking precedence if both are defined. |
Bind_FuncTraitsImp<bslmf::Nil, t_FUNC, 0, 0, 1> | Function traits for member function pointers. The result type is determined from the function pointer traits. |
Bind_FuncTraitsImp<bslmf::Nil, t_FUNC, 0, 1, 0> | Function traits for non-member function pointers. The result type is determined from the function pointer traits. |
Bind_FuncTraitsImp<bslmf::Nil, t_FUNC, 1, 0, 0> | Function traits for non-member function types (references or not, but not pointers to function). The result type is determined from the function pointer traits. |
Bind_FuncTraitsImp<bslmf::Nil, bsl::function<PROTO>, 0, 0, 0> | Function traits for bsl::function objects that are passed by value. The result type is determined by bsl::function<PROTO>::result_type. |
Bind_FuncTraitsImp<bslmf::Nil, t_FUNC*, 0, 0, 0> | Function traits for objects passed by pointer with no explicit return type. The object is assumed to have a result_type or ResultType type definition, with the former taking precedence if both are defined. |
Bind_FuncTraitsImp<bslmf::Nil, bsl::function<PROTO>*, 0, 0, 0> | Function traits for objects passed by pointer with no explicit return type. The object is assumed to have a ResultType type definition. |
Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 0, 0> | Function traits for function objects that are passed by value with explicit return type specification. |
Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 0, 1> | Function traits for member function pointers, with explicit return type specification. |
Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 1, 0> | Function traits for non-member function pointers, with explicit return type specification. |
Bind_FuncTraitsImp<t_RET, t_FUNC, 1, 0, 0> | Function traits for non-member function types (references or not, but not pointers to function), with explicit return type specification. |
Bind_FuncTraitsImp<t_RET, t_FUNC*, 0, 0, 0> | Function traits for objects passed by pointer with explicit return type. |
| Name | Description |
|---|---|
Bind_FuncTraits | This struct provides various traits of the functor type t_FUNC documented below. If t_RET is bslmf::Nil, then the return type is inferred by using either bslmf::FunctionPointerTraits, bslmf::MemberFunctionPointerTraits, or typename t_FUNC::result_type as appropriate. ` // ENUMERATIONS enum { k_IS_EXPLICIT // An invocable object is explicit if ... // (see 'Bind_ImplExplicit') |