HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
defer.hpp
1
2
3
#include "
required.hpp
"
4
#include <type_traits>
5
#include <concepts>
6
7
#pragma once
8
9
namespace
hi::inline v1 {
10
17
template
<std::invocable<> T>
18
class
defer
{
19
public
:
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
34
private
:
35
T _func;
36
};
37
38
template
<std::invocable<> Func>
39
defer
(Func &&) ->
defer<std::remove_cvref_t<Func>
>;
40
41
}
42
required.hpp
This file includes required definitions.
v1::defer
Defer execution of a lambda to the end of the scope.
Definition
defer.hpp:18
std::move
T move(T... args)
Generated on Mon Apr 22 2024 12:52:40 for HikoGUI by
1.10.0