The standard library uses the operator unspecified-bool-type() const idiom in five places. In three of those places ([func.wrap.func.cap], function capacity for example) the returned value is constrained to disallow unintended conversions to int. The standardese is
The return type shall not be convertible to int.
This constraint is omitted for unique_ptr and shared_ptr. It should be added for those.