68 #ifndef ABSL_CLEANUP_CLEANUP_H_
69 #define ABSL_CLEANUP_CLEANUP_H_
73 #include "absl/base/config.h"
74 #include "absl/base/macros.h"
75 #include "absl/cleanup/internal/cleanup.h"
80 template <
typename Arg,
typename Callback =
void()>
82 static_assert(cleanup_internal::WasDeduced<Arg>(),
83 "Explicit template parameters are not supported.");
85 static_assert(cleanup_internal::ReturnsVoid<Callback>(),
86 "Callbacks that return values are not supported.");
118 #if defined(ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
119 template <
typename Callback>
121 #endif // defined(ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
126 template <
typename...
Args,
typename Callback>
128 static_assert(cleanup_internal::WasDeduced<cleanup_internal::Tag, Args...>(),
129 "Explicit template parameters are not supported.");
131 static_assert(cleanup_internal::ReturnsVoid<Callback>(),
132 "Callbacks that return values are not supported.");
140 #endif // ABSL_CLEANUP_CLEANUP_H_