#include <iostream>
#include <memory>
using namespace std;

void foo(bool & currState, bool newState)
{
	bool prevState = currState;
	currState      = newState;
	std::unique_ptr<bool, std::function<void(bool*)>> txEnder(&prevState, [&prevState, &currState](bool* p) {
	    currState = prevState;
	});
	cout << "currState: " << currState << endl;
}


int main() {
	bool state = false;
	foo(state, true);
	cout << "state: " << state << endl;
	return 0;
}