Задав вопрос Ошибка связывания C ++ в файле потребителя, вызванная полем статических данных, я попробовал два разных объявления для экземпляра StateConservator:
StateConservator cs(*pContainer, pDoc->GetConfiguration());
и
StateConservator(*pContainer, pDoc->GetConfiguration());
Первый сделал то, что я хочу, он передает деструктор только после окончания области видимости. Второй передает деструктор в собственной строке самого объявления.
Правильно ли ведет себя компилятор? Если это правильное поведение, как можно объявить анонимную переменную в этой строке?