http://d.puremagic.com/issues/show_bug.cgi?id=8257
Don <clugd...@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugd...@yahoo.com.au --- Comment #1 from Don <clugd...@yahoo.com.au> 2012-10-19 04:14:25 PDT --- The error is not coming from __traits(compiles), it happens while generating the obj file. If you compile with dmd -c -o- then no error occurs. The error message itself should I think be regarded as an internal compiler error. Here's the root cause. struct S { static void g() { } static int w;} void main() { S s; auto k = &s.g; pragma(msg, typeof(&s.g)); } This compiles with -c -o- According to the pragma, &s.g is a delegate. But, since g is a static function, it cannot be a valid delegate. The error is detected only at the glue layer. I believe that &s.g should be a function pointer, and s should be ignored, since already: int *x = &s.w; // accepted, s is ignored s.g(); // accepted, s is ignored. This would mean the __traits in the original code would continue to return true, but the function f!"g"() would actually be valid and would return a function pointer, not a delegate. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------