A class type
T is
hazard-protectable
if it has exactly one base class of type
hazard_pointer_obj_base<T, D>
for some
D,
that base is public and non-virtual, and
it has no base classes of type
hazard_pointer_obj_base<T2, D2>
for any other combination
T2,
D2.