http://www.boost.org/doc/libs/1_38_0/libs/scope_exit/doc/html/scope_exit/alternatives.html
try
{
File passwd("/etc/passwd");
BOOST_SCOPE_EXIT( (&passwd) )
{
passwd.close();
} BOOST_SCOPE_EXIT_END
// ...
}
catch(...)
{
log("could not get user info");
throw;
}