__traits(compiles,...) <=> ? is(typeof(...))

Timon Gehr timon.gehr at gmx.ch
Mon Oct 29 15:38:34 PDT 2012


On 10/29/2012 12:03 PM, Jonathan M Davis wrote:
> On Monday, October 29, 2012 11:42:59 Zhenya wrote:
>> Hi!
>>
>> Tell me please,in this code first and second static if,are these
>> equivalent?
>> with arg = 1, __traits(compiles,"check(arg);") = true,
>> is(typeof(check(arg))) = false.
>
> In principle, is(typeof(code)) checks whether the code in there is
> syntatically and semantically valid but does _not_ check whether the code
> actually compiles. For instance, it checks for the existence of the symbols
> that you use in it, but it doesn't check whether you can actually use the
> symbol (e.g. it's private in another module).
> ...

Accessing private symbols is always illegal, even within typeof expressions.


More information about the Digitalmars-d-learn mailing list