[#btcsignals-signal]
= xref:btcsignals.adoc[btcsignals]::signal
:relfileprefix: ../
:mrdocs:

Functor for calling zero or more connected callbacks&period;

== Synopsis

Declared in `&lt;util&sol;btcsignals&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    typename Signature,
    typename Combiner = xref:btcsignals/null_value.adoc[null&lowbar;value]&gt;
class signal;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:btcsignals/signal/result_type.adoc[`result&lowbar;type`] 
| The result type of invoking the signal, taken from the combiner&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:btcsignals/signal/2constructor-0d.adoc[`signal`]         [.small]#[constructor]#
| Constructors
| xref:btcsignals/signal/2destructor.adoc[`&#126;signal`] [.small]#[destructor]#
| Destroy the signal and drop all connection state&period;
| xref:btcsignals/signal/operator_assign-02.adoc[`operator&equals;`] 
| Assignment operators
| xref:btcsignals/signal/connect.adoc[`connect`] 
| Connect a new callback to the signal&period; A forwarding callable accepts anything that can be stored in a std&colon;&colon;function&period;
| xref:btcsignals/signal/empty.adoc[`empty`] 
| Returns true if there are no enabled callbacks&period;
| xref:btcsignals/signal/operator_call.adoc[`operator()`] 
| Execute all enabled callbacks for the signal&period; Rather than allowing for custom combiners, the behavior of any&lowbar;of is hard&hyphen;coded here&period;
|===


== Template Parameters

[cols="1,4"]
|===
| Name| Description
| *Signature*
| The callable signature accepted by connected callbacks&period;
| *Combiner*
| The combiner that determines the signal&apos;s result type&period;
|===


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