https://issues.dlang.org/show_bug.cgi?id=13372
Adam D. Ruppe <destructiona...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |destructiona...@gmail.com --- Comment #5 from Adam D. Ruppe <destructiona...@gmail.com> --- Here's something related I just came upon: template wrap(string foo) { enum wrap = foo; } pragma(msg, __traits(parent, wrap!"lol")); // says lol pragma(msg, __traits(parent, __traits(parent, wrap!"lol"))); // says argument "lol" has no parent So in the first one, it appears it evaluates to the outer template which is then instantly evaluated back to the enum literal. Then the second one sees the literal and says literals have no parents. Quite bizarre indeed. --