On 12.11.2015 06:27, ric maicle wrote:
I was playing with __traits and tried the code below.
Shouldn't the compiler emit a warning that I'm defining isPOD
multiple times and/or I'm defining something that is built-in
like isPOD?

// DMD64 D Compiler v2.069
import std.stdio;

struct isPOD {
bool status = false;
}

int main()
{
     byte isPOD = 0;
     writeln(isPOD);
     writeln(__traits(isPOD, typeof(isPOD)));
     return 0;
}

__traits has special syntax. The first "argument" must be from a list of special keywords that only have special meaning in that place. You can't put the name of a struct there, and you can't put the special keyword anywhere else. So there's no ambiguity, and you're not redefining anything. Everything's fine.

Reply via email to