# FunctionDelegate

<a id="functiondelegate"></a>

# FunctionDelegate

```cpp
#include <icy/delegate.h>

template<typename RT, typename... Args>
struct FunctionDelegate
```

[Defined in src/base/include/icy/delegate.h:48](https://github.com/auscaster/icey/blob/main/src/base/include/icy/delegate.h#L48)

> **Inherits:** [`AbstractDelegate< RT, Args... >`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate)

The [`FunctionDelegate`](#functiondelegate) contains a `std::function`.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`func`](#func) | `variable` | Declared here |
| [`FunctionDelegate`](#functiondelegate-1) | `function` | Declared here |
| [`operator()`](#operator-28) | `function` | Declared here |
| [`operator==`](#operator-29) | `function` | Declared here |
| [`~AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate-1) | `function` | Inherited from [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate) |
| [`operator()`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-1) | `function` | Inherited from [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate) |
| [`operator==`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-2) | `function` | Inherited from [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate) |

## Inherited from [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`~AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate-1) `virtual` `inline` |  |
| `function` | [`operator()`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-1) `virtual` `const` | Invokes the underlying callable with the supplied arguments. |
| `function` | [`operator==`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-2) `virtual` `const` | Compares two delegates for equality (same target function and instance). |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::function< RT(Args...)>` | [`func`](#func)  |  |

---

<a id="func"></a>

### func

```cpp
std::function< RT(Args...)> func
```

[Defined in src/base/include/icy/delegate.h:50](https://github.com/auscaster/icey/blob/main/src/base/include/icy/delegate.h#L50)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`FunctionDelegate`](#functiondelegate-1) `inline` |  |
| `RT` | [`operator()`](#operator-28) `virtual` `const` `inline` `override` | Calls the wrapped `std::function`. |
| `bool` | [`operator==`](#operator-29) `virtual` `const` `inline` `override` | Always returns false; `std::function` targets cannot be compared for equality. |

---

<a id="functiondelegate-1"></a>

### FunctionDelegate

`inline`

```cpp
inline FunctionDelegate(std::function< RT(Args...)> func)
```

[Defined in src/base/include/icy/delegate.h:53](https://github.com/auscaster/icey/blob/main/src/base/include/icy/delegate.h#L53)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `func` | `std::function< RT(Args...)>` | `std::function` to wrap. |

---

<a id="operator-28"></a>

### operator()

`virtual` `const` `inline` `override`

```cpp
virtual inline RT operator()(Args... args) const override
```

[Defined in src/base/include/icy/delegate.h:61](https://github.com/auscaster/icey/blob/main/src/base/include/icy/delegate.h#L61)

Calls the wrapped `std::function`. 
#### Returns
Function result.

#### Reimplements

- [`AbstractDelegate::operator()`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `args` | `Args...` | Arguments forwarded to the function. |

---

<a id="operator-29"></a>

### operator==

`virtual` `const` `inline` `override`

```cpp
virtual inline bool operator==(const AbstractDelegate< RT, Args... > &) const override
```

[Defined in src/base/include/icy/delegate.h:67](https://github.com/auscaster/icey/blob/main/src/base/include/icy/delegate.h#L67)

Always returns false; `std::function` targets cannot be compared for equality.

#### Reimplements

- [`AbstractDelegate::operator==`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#operator-2)
