HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
defer.hpp
1
2
3#include "required.hpp"
4#include <type_traits>
5#include <concepts>
6
7#pragma once
8
9namespace hi::inline v1 {
10
17template<std::invocable<> T>
18class defer {
19public:
20 defer() = delete;
21 defer(defer &&) = delete;
22 defer(defer const &) = delete;
23 defer &operator=(defer &&) = delete;
24 defer &operator=(defer const &) = delete;
25
26 template<std::invocable<> Func>
27 [[nodiscard]] constexpr defer(Func &&func) noexcept : _func(std::forward<Func>(func)) {}
28
29 constexpr ~defer()
30 {
31 std::move(_func)();
32 }
33
34private:
35 T _func;
36};
37
38template<std::invocable<> Func>
40
41}
42
This file includes required definitions.
Defer execution of a lambda to the end of the scope.
Definition defer.hpp:18
T move(T... args)