https://issues.dlang.org/show_bug.cgi?id=15083
--- Comment #4 from John Colvin <john.loughran.col...@gmail.com> --- (In reply to Marc Schütz from comment #3) > (In reply to John Colvin from comment #2) > > You can definitely declare variables with Voldemort types. > > > > e.g. > > auto foo(){ struct S{} return S(); } > > void bar(){ typeof(foo()) a; } > > > > is fine. > > > > That's not a "real" Voldemort type with a closure; try this instead: > > auto foo(){ > int x; > struct S { > int baz() { return x; } > } > return S(); > } > void bar(){ typeof(foo()) a; } // Error: cannot access frame pointer of > xx.foo.S OK, I see what you mean. > > > > The problem here is to do with the initialiser. > > > > typeof(dirEntries(path, filetype, SpanMode.depth)) files = void; > > > > doesn't cause any problems. > > This could either be an oversight (= bug), or it could be intentional. I > suspect the latter, because it allows to actually declare a Voldemort > variable that is only initialized later. Yes, I think it probably is intentional, or at least not a problem that it's allowed. --