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_);