xtd
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
xtd.core
include
xtd
scope_success.hpp
Go to the documentation of this file.
1
4
#pragma once
5
#include "
action_callable.hpp
"
6
#include "
unused.hpp
"
7
#include <exception>
8
#include <utility>
9
11
namespace
xtd
{
65
struct
scope_success
{ };
66
68
template
<
typename
function_t>
69
requires
xtd::action_callable<function_t>
&& std::is_nothrow_invocable_v<function_t&>
70
struct
__xtd_scope_success_object__ {
71
__xtd_scope_success_object__(function_t&& f) : function(std::forward<function_t>(
f
)) {}
72
~__xtd_scope_success_object__() noexcept {
if
(std::uncaught_exceptions() == exceptions_on_enter) function();}
73
int
exceptions_on_enter = std::uncaught_exceptions();
74
function_t
function
;
75
};
76
77
template
<
typename
function_t>
78
requires
xtd::action_callable<function_t> && std::is_nothrow_invocable_v<function_t&>
79
auto
operator+
(
scope_success
, function_t&& function) {
80
return
__xtd_scope_success_object__<function_t> {std::forward<function_t>(function)};
81
}
83
}
84
138
#define scope_success_ \
139
[[maybe_unused]] auto __ = xtd::scope_success {} + [&]()
action_callable.hpp
Contains xtd::action_callable concept.
xtd::action_callable
Definition
action_callable.hpp:11
xtd::expressions::operator+
constexpr auto operator+(left_t left, right_t right)
Add the specified left and right operands.
Definition
add.hpp:100
xtd::console_key::f
@ f
The F key.
Definition
console_key.hpp:98
xtd::forms::keys::function
@ function
The FUNCTION modifier key.
Definition
keys.hpp:480
xtd
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition
abstract_object.hpp:8
xtd::scope_success
Nowadays, every C++ developer is familiar with the Resource Acquisition Is Initialization (RAII) tech...
Definition
scope_success.hpp:65
unused.hpp
Contains __ and unused_ keywords.
Generated on
for xtd by
Gammasoft
. All rights reserved.