2 problems I can't get my head around

John Chapman johnch_atms at hotmail.com
Mon Nov 26 07:46:17 PST 2012


On Monday, 26 November 2012 at 15:39:35 UTC, Manu wrote:
> On 26 November 2012 14:31, Manu <turkeyman at gmail.com> wrote:
>
>> 1.
>>
>> enum i = 10;
>> pragma(msg, is(i == enum) || is(typeof(i) == enum)); // <- 
>> false?!
>>
>> I can't find a way to identify that i is an enum, not a 
>> variable; can not
>> be assigned, has no address, etc.
>>
>>
>> 2.
>>
>> import std.stdio;
>> pragma(msg, !is(std) && is(typeof(std))); // <- true?!
>>
>> std.stdio is a module, it looks like a variable. typeof(std) 
>> == void...
>> What the? Why does it even have a type?
>> I can't find a sensible way to distinguish std from any other 
>> regular
>> variable.
>>
>
> And a new one!
>
> 3.
>
> Properties look like variables. How do I distinguish properties 
> from proper
> variables?
> struct S
> {
>   @property int P() { return 10; }
> }
>
> pragma(msg, is(typeof(S.P) == function)) // false?!

http://dlang.org/phobos/std_traits.html#functionAttributes


More information about the Digitalmars-d mailing list