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.
