[boost] Detecting smart pointers: is_deferencable, a solution?