Compiler doesn't complain with multiple definitions

anonymous via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Nov 12 03:50:39 PST 2015


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.


More information about the Digitalmars-d-learn mailing list