19#ifndef LIBSEMIGROUPS_DETAIL_VALUE_GUARD_HPP_
20#define LIBSEMIGROUPS_DETAIL_VALUE_GUARD_HPP_
24#include "libsemigroups/is_specialization_of.hpp"
26namespace libsemigroups::detail {
30 template <
typename Thing>
36 ValueGuard() =
delete;
37 ValueGuard(ValueGuard
const&) =
delete;
38 ValueGuard(ValueGuard&&) =
delete;
39 ValueGuard& operator=(ValueGuard
const&) =
delete;
40 ValueGuard& operator=(ValueGuard&&) =
delete;
42 explicit ValueGuard(Thing& value);
47#include "value-guard.tpp"