17#ifndef TOOLBOX_UTIL_TRANS_HPP
18#define TOOLBOX_UTIL_TRANS_HPP
23inline namespace util {
25template <
typename TargetT>
31 static_assert(std::is_nothrow_invocable_v<
decltype(&TargetT::rollback),
TargetT>);
36template <
typename TargetT,
typename TraitsT = TransTraits<TargetT>>
42 TraitsT::start(target_);
47 TraitsT::rollback(target_);
61 TraitsT::commit(target_);