À l'aide de .reset() pour libérer un boost::shared_ptr avec la propriété exclusive

Je suis le stockage d'un objet (TTF_Font) dans un shared_ptr qui m'est fournie à partir d'un tiers de l'API. Je ne peux pas utiliser de nouvelles ou de les supprimer de l'objet, de sorte que le shared_ptr est également fourni un de "libérer" foncteur.

//Functor
struct CloseFont
{
    void operator()(TTF_Font* font) const
    {
        if(font != NULL) {
            TTF_CloseFont(font);
        }
    }
};

boost::shared_ptr<TTF_Font> screenFont;

screenFont = boost::shared_ptr<TTF_Font>( TTF_OpenFont("slkscr.ttf", 8), CloseFont() );

Si, plus tard, je dois explicitement gratuit cet objet est-il correct de faire cela:

screenFont.reset();

Puis laissez screenFont (le shared_ptr objet) être détruit naturellement?