[llvm-dev] __is_empty type-trait implementation in llvm

Puneetha K via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 6 05:18:47 PDT 2017

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

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,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170606/27e5ee09/attachment.html>

More information about the llvm-dev mailing list