Я хочу использовать unique_ptr
в методе.Я хочу полагаться на тот факт, что он уничтожается по закрывающей скобке метода (если это действительно так) .
Причина, по которой я хочуполагаться на этот факт является то, что я хочу написать простой класс для ведения журнала, который говорит, когда он вошел / вышел из метода, что-то вроде:
class MethodTracing
{
string _signature;
public:
MethodTracing(string signature)
{
_signature=signature;
BOOST_LOG_TRIVIAL(trace) << "ENTERED " << _signature ;
}
~MethodTracing()
{
BOOST_LOG_TRIVIAL(trace) << "EXITED " << _signature;
}
};
Затем я могу использовать его так:
void myMethod( )
{
auto _ = unique_ptr<MethodTracing>(new MethodTracing(__FUNCSIG__) ) ;
/// ...
}
Верно ли (и непротиворечиво), что unique_ptr
при создании в методе уничтожается в конце метода (при условии, что он не передается).
Есть ли какие-либо другие скрытые (или иные!) Ловушки, о которых мне следует знать?
Обновление: Как и предлагалось в большинстве ответов, я мог бы использовать местныйпеременная область видимости.Я пробовал это с MethodTracing(__FUNCSIG__);
, но, конечно, я не назначил локальную переменную! , поэтому она сразу вышла из области видимости.Я думал, что среда выполнения была умной, но нет, я был глуп (слишком долго в C #!)