finalizer in C++
От: greenpci  
Дата: 15.06.15 11:39
Оценка:
Нужен финалайзер и не хочется создавать еще одно энтити для этого.

Надо вызать это перед выходом из блока.
in.SetEOFHandler(nullptr);


Насколько уродливо такое решение?
{
  in.SetEOFHandler(PartialPacketHandler);
  static int dummy = 0; // used to initialize std::unique_ptr but it will not be deleted
  auto deleter = [&in](int *p){in.SetEOFHandler(nullptr);};
  std::unique_ptr<int, decltype(deleter)> clean_up(&dummy, deleter);
  DoSomething(); // throws
}


Может есть лучше способ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.