[cfe-dev] Usage of __for_bool_ value in __nat {} classes

Eric Fiselier via cfe-dev cfe-dev at lists.llvm.org
Tue Jun 5 12:57:46 PDT 2018


I'm not sure what the purpose is. I agree it doesn't seem to have any
effect, and the git blame comes back to the initial commit for libc++.
Changing the layout of `__nat` now would be an ABI break; so that's out of
the question. But I have some upcoming patches that are going
to remove most usages of it.

@Howard, do you recall what the purpose of this was? Something to do with
initializing empty structs maybe?

/Eric

On Tue, Jun 5, 2018 at 2:11 AM, Li, Zeyang via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> 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.
> Please help.
>
> Thanks,
> Zeyang
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180605/e7b8e4f9/attachment.html>


More information about the cfe-dev mailing list