http://d.puremagic.com/issues/show_bug.cgi?id=664
--- Comment #11 from Don <clugd...@yahoo.com.au> 2011-12-20 05:22:56 PST --- (In reply to comment #10) > (In reply to comment #9) > > Complete section of the spec: > > ------ > > 6. is ( Type Identifier == TypeSpecialization ) > > You were suggesting in comment 6 that is(x == function), not is(x T == > function), should fail if x is variadic. I didn't intend to. All discussion has been about is(Type Identifier == function). Sorry that that wasn't clear. > > keyword alias type for Identifier > > function TypeTuple of the function parameter types > > ------ > > This is impossible if the function has a C-style variadic parameter. > > Although > > solution (2) would allow it to be a Tuple, it wouldnt be a TypeTuple. So a > > change to the spec is inevitable. > > I see now. So I suppose what we need is distinct syntaxes for extracting > variadic and non-variadic parameter lists. So maybe: > > is ( Type == function ) > passes iff Type is a function type, variadic or not > is ( Type Identifier == function ) > passes iff Identifier is a non-variadic function type, and > binds Identifier to a tuple of the parameter types > is ( Type Identifier , ... == function ) > passes iff Identifier is a variadic function type, and binds > Identifier to a tuple of the fixed parameter types Yeah, that would work. But it's far more complicated than (1), changing one line of the spec to match the compiler, namely that: is(Type Identifier == function) binds Identifier to: -TypeTuple of the function parameter types +TypeTuple of the function parameter types. For C-style variadic functions, only the non-variadic parameters are included. and then (possibly*) provide some other mechanism for identifying if a function is C-style variadic. is() expressions are just about the ugliest thing in the language already, I'm loathe to recommend making them even uglier. * I say possibly, because I think that given a tuple T and return type R, you can check if typeof(f) == extern(C) R function (T, ...) So I'm not sure that any compiler changes are required. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------