Yeah, I ran into this as well. And I've posted about it on this NG already.
I have made this bug report some time ago: http://d.puremagic.com/issues/show_bug.cgi?id=4675 Simen kjaeraas Wrote: > Don <nos...@nospam.com> wrote: > > > Jonathan M Davis wrote: > >> This prints out void: > >> import std.stdio; > >> template isX(T) > >> { > >> enum val = true; > >> enum isX = val; > >> } > >> void main() > >> { > >> writeln(typeof(isX!(int)).stringof); > >> } > >> If you change it to > >> template isX(T) > >> { > >> enum val = true; > >> enum isX = true; > >> } > >> it still prints out void. If you get rid of val, it finally prints > >> bool. However, as I understood it, you should be able to declare > >> multiple enums within the same template and get this to work as long as > >> you just have the one with the same name as the template. Am I wrong > >> about that? > > > > You're wrong about that. > > Actually, according to TDPL, that is correct. "A template using the > eponymous trick may define other names inside, but those are simply > inaccessible from the outside." (page 281) > > -- > Simen