BloombergLP::bdlf::Bind_FuncTraitsImp

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.

Synopsis

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;

Description

Only specializations of this class should be used (given below). All specializations define the types and enumerations documented in the Bind_FuncTraits below.

Specializations

NameDescription
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.

Derived Classes

NameDescription
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')