https://issues.dlang.org/show_bug.cgi?id=7492
Denis Shelomovskij <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID |--- --- Comment #3 from Denis Shelomovskij <[email protected]> --- (In reply to Kenji Hara from comment #2) > (In reply to Denis Shelomovskij from comment #0) > > --- > > auto f() { return new char[1]; } > > > > immutable s = f(); // error, works with non-character arrays > > --- > > Error: cannot implicitly convert expression ("\xff") of type char[] to > > immutable(char[]) > > The function returns char[]. In D type system, char[] to immutable(char[]) > conversion is not allowed. > > If you annotate the function f with pure attribute, f() will return an > unique array so compiler will allow the conversion. > > Anyway, this is not CTFE problem. The code is trying to violate D type > system, and compiler reports the error correctly. If function is executed during CTFE it's definitely effectively `pure` for given parameters so I don't understand your arguments. Anyway "works with non-character arrays" comment isn't addressed. Event if this compiler error is an expected behaviour, the issue is in the fact other types don't produce the same error (try e.g. `int` and `Object` arrays). --
