27#ifndef LIB_TEST_TRANSIENTLY_H
28#define LIB_TEST_TRANSIENTLY_H
44 template<
typename TAR>
83 : doIt_{
std::move (manipulation)}
89 CHECK (undoIt_,
"REJECT Manipulation -- "
90 "Failed to provide a way "
91 "to undo the manipulation.");
98 undoIt_ = std::move (cleanUp);
107 template<
typename FUN,
typename=lib::meta::enable_if<lib::meta::has_Sig<FUN,
void(
void)>>>
121#define TRANSIENTLY(_OO_) \
122 lib::test::Transiently PPMPL_CAT(transientlyManipulated_,__LINE__)(_OO_); PPMPL_CAT(transientlyManipulated_,__LINE__)
std::function< void(void)> Manipulator
Transiently(Manipulator manipulation)
void cleanUp(Manipulator cleanUp)
Token to capture a value and restore original when leaving scope.
Any copy and copy construction prohibited.
Metaprogramming tools for detecting and transforming function types.
Implementation namespace for support and library code.
Test runner and basic definitions for tests.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Preprocessor metaprogramming library.