[#BloombergLP-bdlf-Bind_FuncTraitsImp-05] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlf.adoc[bdlf]::Bind_FuncTraitsImp :relfileprefix: ../../ :mrdocs: 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>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- 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 [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-088.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-0a.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-086.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-048.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-0f2.adoc[`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`. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-0b.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-0e.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-07.adoc[`Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 0, 0>`] | Function traits for function objects that are passed by value with explicit return type specification. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-00.adoc[`Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 0, 1>`] | Function traits for member function pointers, with explicit return type specification. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-0fc.adoc[`Bind_FuncTraitsImp<t_RET, t_FUNC, 0, 1, 0>`] | Function traits for non‐member function pointers, with explicit return type specification. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-047.adoc[`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. | xref:BloombergLP/bdlf/Bind_FuncTraitsImp-09.adoc[`Bind_FuncTraitsImp<t_RET, t_FUNC*, 0, 0, 0>`] | Function traits for objects passed by pointer with explicit return type. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlf/Bind_FuncTraits.adoc[`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') |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#