add missing header and improve is_shared_ptr with variable templates