[cfe-dev] [llvm-dev] __is_empty type-trait implementation in llvm
Erik Pilkington via cfe-dev
cfe-dev at lists.llvm.org
Tue Jun 6 20:50:12 PDT 2017
+cfe-dev
From [meta.unary.prop], for std::is_empty: "If T is a non-union class
type, T shall be a complete type.". Since an incomplete array type isn't
a class type, we don't need to require the complete type here, AFAIK.
Thanks,
Erik
On 6/6/17 5:18 AM, Puneetha K via llvm-dev wrote:
> Hi all,
>
> In c++11 and above, llvm supports many type traits like __is_empty,
> __is_abstract etc.
> GCC throws an error if we pass an array of incomplete type with
> unknown bounds, saying incomplete type.
> LLVM also throws an error for some particular type traits and not for
> others.
>
> Of what I have read, the standard specifies to accept only complete
> type or void for is_empty.
> But in the code, if we pass an array of unknown bounds, it still compiles.
>
> Example code:
>
> struct I;
> int a = __is_empty(I[])
>
> This compiles in the current svn. Whereas isn't it supposed to give
> incomplete type error, like GCC?
>
> Thanks & Regards,
> Puneetha
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170606/be0235b6/attachment.html>
More information about the cfe-dev
mailing list