[#BloombergLP-bdlf-BindWrapper]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlf.adoc[bdlf]::BindWrapper
:relfileprefix: ../../
:mrdocs:

This wrapper provides shared&hyphen;pointer semantics around a binder&period;

== Synopsis

Declared in `&lt;bdlf&lowbar;bind&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;RET,
    class t&lowbar;FUNC,
    class t&lowbar;BOUND&lowbar;TUPLE&gt;
class BindWrapper;
----

== Description

This wrapper class provides a binder with shared pointer semantics to a non&hyphen;modifiable binder (both `operator&ast;` and `operator&hyphen;&gt;` accessors) and forwards its construction arguments to the underlying binder&period; Note that instances of this class should not be created explicitly&semi; instead use the `BindUtil` factory methods&period; Note also that instances of this class can be invoked directly so the result of `BindUtil&colon;&colon;bind` is invocable&period; Note finally that even though this wrapper has pointer semantics for `operator&ast;` and `operator&hyphen;&gt;`, it has value semantics for invocation&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlf/BindWrapper/ResultType.adoc[`ResultType`] 
| The return type of this binder object&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlf/BindWrapper/2constructor-08.adoc[`BindWrapper`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlf/BindWrapper/invoke.adoc[`invoke`] 
| Invoke the bound function with the evaluated arguments&period;
| xref:BloombergLP/bdlf/BindWrapper/operator_call-026.adoc[`operator()`] 
| Function call operators
| xref:BloombergLP/bdlf/BindWrapper/operator_star.adoc[`operator&ast;`] 
| Return a reference to the non&hyphen;modifiable binder shared by this wrapper&period;
| xref:BloombergLP/bdlf/BindWrapper/operator_ptr.adoc[`operator&hyphen;&gt;`] 
| Return the address of the non&hyphen;modifiable binder shared by this wrapper&period;
| xref:BloombergLP/bdlf/BindWrapper/2conversion-074.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;BindWrapper, HasPointerSemantics&gt;`] 
| Declare that this type has pointer semantics&period;
| xref:BloombergLP/bdlf/BindWrapper/2conversion-0c.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;BindWrapper, IsBitwiseMoveable&gt;`] 
| Declare that this type is bitwise moveable&period;
| xref:BloombergLP/bdlf/BindWrapper/2conversion-07d.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;BindWrapper, is&lowbar;nothrow&lowbar;move&lowbar;constructible&gt;`] 
| Declare that this type is nothrow move constructible&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
