# ConstClassDelegate

<a id="constclassdelegate"></a>

# ConstClassDelegate

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

template<class Class, typename RT, typename... Args>
struct ConstClassDelegate
```

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

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

The [`ConstClassDelegate`](#constclassdelegate) contains a pointer to a `const` class member.

This class implements fast delegates and function comparison.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`instance`](#instance-1) | `variable` | Declared here |
| [`method`](#method-1) | `variable` | Declared here |
| [`ConstClassDelegate`](#constclassdelegate-1) | `function` | Declared here |
| [`operator()`](#operator-11) | `function` | Declared here |
| [`operator==`](#operator-12) | `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 |
|--------|------|-------------|
| `Class *` | [`instance`](#instance-1)  |  |
| `RT(Class::*` | [`method`](#method-1)  |  |

---

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

### instance

```cpp
Class * instance
```

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

---

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

### method

```cpp
RT(Class::* method)(Args...) const
```

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

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`ConstClassDelegate`](#constclassdelegate-1) `inline` |  |
| `RT` | [`operator()`](#operator-11) `virtual` `const` `inline` `override` | Calls the const member function on `instance`. |
| `bool` | [`operator==`](#operator-12) `virtual` `const` `inline` `override` |  |

---

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

### ConstClassDelegate

`inline`

```cpp
inline ConstClassDelegate(Class * instance, RT(Class::*)(Args...) const method)
```

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `instance` | `Class *` | Object on which to invoke the const member function. |
| `method` | `RT(Class::*)(Args...) const` | Pointer to the const member function to wrap. |

---

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

### operator()

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

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

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

Calls the const member function on `instance`. 
#### Returns
Method 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 method. |

---

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

### operator==

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

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

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

#### Returns
True if both delegates wrap the same instance/method pair.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `that` | const [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate)< RT, Args... > & | Other delegate to compare. |
