projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
.gitignore: ignore local vscode workspace settings file
[lttng-tools.git]
/
src
/
common
/
scope-exit.hpp
diff --git
a/src/common/scope-exit.hpp
b/src/common/scope-exit.hpp
index 46479bc572439762ecded83cad8d4b682927cac0..3f8c90f80941fbe4384c498c559a6c4d6454be0c 100644
(file)
--- a/
src/common/scope-exit.hpp
+++ b/
src/common/scope-exit.hpp
@@
-33,18
+33,19
@@
class scope_exit {
public:
/*
* Since ScopeExitInvocableType will be invoked in the destructor, it
public:
/*
* Since ScopeExitInvocableType will be invoked in the destructor, it
- * must be `noexcept` lest we anger the undefined behaviour gods.
+ * must be `noexcept` lest we anger the undefined behaviour gods by throwing
+ * an exception while an exception is active.
*/
static_assert(details::is_invocation_noexcept<ScopeExitInvocableType>::value,
*/
static_assert(details::is_invocation_noexcept<ScopeExitInvocableType>::value,
-
"scope_exit requires a noexcept invocable type");
+ "scope_exit requires a noexcept invocable type");
explicit scope_exit(ScopeExitInvocableType&& scope_exit_callable) :
explicit scope_exit(ScopeExitInvocableType&& scope_exit_callable) :
- _on_scope_exit{
std::forward<ScopeExitInvocableType>(scope_exit_callable)
}
+ _on_scope_exit{
std::forward<ScopeExitInvocableType>(scope_exit_callable)
}
{
}
{
}
- scope_exit(scope_exit&& rhs) :
- _on_scope_exit{
std::move(rhs._on_scope_exit)}, _armed{rhs._armed
}
+ scope_exit(scope_exit&& rhs)
noexcept
:
+ _on_scope_exit{
std::move(rhs._on_scope_exit) }, _armed{ rhs._armed
}
{
/* Don't invoke ScopeExitInvocableType for the moved-from copy. */
rhs.disarm();
{
/* Don't invoke ScopeExitInvocableType for the moved-from copy. */
rhs.disarm();
@@
-58,6
+59,8
@@
public:
* also propagate the scope_exit to another scope, should it be needed.
*/
scope_exit(const scope_exit&) = delete;
* also propagate the scope_exit to another scope, should it be needed.
*/
scope_exit(const scope_exit&) = delete;
+ scope_exit& operator=(const scope_exit&) = delete;
+ scope_exit& operator=(scope_exit&&) = delete;
scope_exit() = delete;
void disarm() noexcept
scope_exit() = delete;
void disarm() noexcept
@@
-81,7
+84,7
@@
template <typename ScopeExitInvocableType>
scope_exit<ScopeExitInvocableType> make_scope_exit(ScopeExitInvocableType&& scope_exit_callable)
{
return scope_exit<ScopeExitInvocableType>(
scope_exit<ScopeExitInvocableType> make_scope_exit(ScopeExitInvocableType&& scope_exit_callable)
{
return scope_exit<ScopeExitInvocableType>(
-
std::forward<ScopeExitInvocableType>(scope_exit_callable));
+ std::forward<ScopeExitInvocableType>(scope_exit_callable));
}
} /* namespace lttng */
}
} /* namespace lttng */
This page took
0.025837 seconds
and
4
git commands to generate.