В рамках функции-члена я хочу временно установить переменную-член в определенное значение.
Затем, когда эта функция вернется, я хочу, чтобы reset эта переменная-член указала на известное значение.
Для обеспечения безопасности в отношении исключений и нескольких возвратов, и я сделал это с простым классом RAII. Он определен в рамках функции-члена.
void MyClass::MyMemberFunction() {
struct SetBackToFalse {
SetBackToFalse(bool* p): m_p(p) {}
~SetBackToFalse() {*m_p=false;}
private:
bool* m_p;
};
m_theVariableToChange = true;
SetBackToFalse resetFalse( &m_theVariableToChange ); // Will reset the variable to false.
// Function body that may throw.
}
Кажется, это так очевидно, что мне было интересно, если бы такой класс шаблонов выполнял это в стандартной библиотеке С++?