__nat class in clang standard libarry

2019-05-21 04:06发布

问题:

I was looking through clang's c++ standard library, and found this class in the shared_ptr class.

class shared_ptr
...
private:
        struct __nat {int __for_bool_;};
...
};

and I understand that this class is used to detect whether type conversion is possible at compile time, but its member __for_bool_ is never used anywhere in the class or the weak_ptr counterpart. So my question is, what is the point of __for_bool_? Why not simply use an empty class for the same purpose?

I'm sure the standard library authors definitely knows better than me.