template<typename T>
cork_handle class
This smart pointer calls cork in the constructor and uncork on its argument when it is destructed. This is an exception-safe way of calling cork() and uncork().