JUCE

- Main Page
- Related Pages
- Topics
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Loading...
Searching...
No Matches
Public Member Functions | List of all members
ErasedScopeGuard Class Reference
juce_core » misc

A ScopeGuard that uses a std::function internally to allow type erasure. More...

`#include <juce_ScopeGuard.h>`

## Public Member Functions
| ErasedScopeGuard ()=default
| Constructs an ErasedScopeGuard with no callback.
| ErasedScopeGuard (std::function< void()> d)
| Constructs an ErasedScopeGuard that will call the provided callback when the Guard is destroyed.
| ErasedScopeGuard (ErasedScopeGuard &&other) noexcept
| Constructs an instance that assumes responsibility for calling other's callback.
ErasedScopeGuard & | operator= (ErasedScopeGuard &&other) noexcept
| Calls the stored callback, if any, then assumes responsibility for calling other's callback.
| ~ErasedScopeGuard () noexcept
| Destructor, calls the callback assigned to this ScopeGuard.
void | reset ()
| Calls the stored callback, if any, then resets this instance to its default state.
void | release ()
| Resets this instance to its default state without calling the stored callback.

## Detailed Description

A ScopeGuard that uses a std::function internally to allow type erasure.

This can be handy; it allows lots of ErasedScopeGuards, all with different callbacks, to be stored in a homogeneous container.

An instance of this type will automatically call its callback when it is destroyed.

ErasedScopeGuard has a few similarities with std::unique_ptr:

- Calling reset() on a unique_ptr destroys the object if it hasn't been destroyed yet and puts the unique_ptr back into a default/null state; calling reset() on an ErasedScopeGuard calls the callback if it hasn't been called yet and puts the Guard back into a default/null state.
- Calling release() on a unique_ptr returns the unique_ptr back to a default state without destroying the managed object; calling release() on an ErasedScopeGuard returns the Guard back to a default state without calling the callback.
- Moving a unique_ptr transfers the responsibility of destroying the managed object to another unique_ptr instance; moving an ErasedScopeGuard transfers the responsibility of calling the callback to another Guard instance.

## Constructor & Destructor Documentation

## ◆ ErasedScopeGuard() [1/3]

ErasedScopeGuard::ErasedScopeGuard | ( |  | ) |
| default

Constructs an ErasedScopeGuard with no callback.

## ◆ ErasedScopeGuard() [2/3]

ErasedScopeGuard::ErasedScopeGuard | ( | std::function< void()> | d | ) |
| explicit

Constructs an ErasedScopeGuard that will call the provided callback when the Guard is destroyed.

## ◆ ErasedScopeGuard() [3/3]

ErasedScopeGuard::ErasedScopeGuard | ( | ErasedScopeGuard && | other | ) |
| noexcept

Constructs an instance that assumes responsibility for calling other's callback.

## ◆ ~ErasedScopeGuard()

ErasedScopeGuard::~ErasedScopeGuard | ( |  | ) |
| noexcept

Destructor, calls the callback assigned to this ScopeGuard.

## Member Function Documentation

## ◆ operator=()

ErasedScopeGuard & ErasedScopeGuard::operator= | ( | ErasedScopeGuard && | other | ) |
| noexcept

Calls the stored callback, if any, then assumes responsibility for calling other's callback.

After this call, other will be reset to its default state.

## ◆ reset()

void ErasedScopeGuard::reset | ( |  | ) |

Calls the stored callback, if any, then resets this instance to its default state.

## ◆ release()

void ErasedScopeGuard::release | ( |  | ) |

Resets this instance to its default state without calling the stored callback.

The documentation for this class was generated from the following file:

- juce_ScopeGuard.h