Чисто чтобы не забывать закрывать виндовые хендлы, набросал примитивный шаблон:
template<typename T>
class CallOnScopeLeave
{
typedef int (__stdcall *func_type)(T); // int & stdcall need for calling Win API
func_type Func;
T Param;
public:
CallOnScopeLeave(func_type func, T par) : Func(func), Param(par) {};
~CallOnScopeLeave()
{
Func(Param);
};
};
Используется, понятное дело, так:
HANDLE hFile = CreaterFile(...);
if (hFile == INVALID_HANDLE_VALUE)
return;
CallOnScopeLeave<HANDLE>(&CloseHandle, hFile);
// работа с хэндлом...
А вопрос такой. Наверняка эт не я один умный
, и такие шаблоны уже существует. Линканите плз какой-нибудь более-менее известный и стандартный. (Без заточки под винду, как у меня, да и вообще хочется посмотреть на "тру" RAII-шаблон
)