[llvm-dev] __is_empty type-trait implementation in llvm
Erik Pilkington via llvm-dev
llvm-dev at lists.llvm.org
Tue Jun 6 20:50:12 PDT 2017
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.
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
> 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,
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev