https://issues.dlang.org/show_bug.cgi?id=10956
--- Comment #2 from [email protected] --- (In reply to Andrej Mitrovic from comment #0) > ----- > import std.getopt; > > void main(string[] args) > { > int i; > getopt(args, &i, ""); > } > ----- > > This call is wrong, the text argument should come before the pointer, but > the diagnostics are bad: > > std\getopt.d(499): Deprecation: using * on an array is deprecated; use > *(receiver).ptr instead > std\getopt.d(499): Error: cannot modify immutable expression > *cast(immutable(char)*)receiver > std\getopt.d(500): Deprecation: using * on an array is deprecated; use > *(receiver).ptr instead > std\getopt.d(500): Deprecation: using * on an array is deprecated; use > *(receiver).ptr instead > std\getopt.d(500): Error: cannot modify immutable expression > *cast(immutable(char)*)receiver > std\getopt.d(400): Error: template instance std.getopt.handleOption!string > error instantiating > std\getopt.d(351): instantiated from here: getoptImpl!(int*, string) > test.d(8): instantiated from here: getopt!(int*, string) > std\getopt.d(351): Error: template instance std.getopt.getoptImpl!(int*, > string) error instantiating > test.d(8): instantiated from here: getopt!(int*, string) > test.d(8): Error: template instance std.getopt.getopt!(int*, string) error > instantiating I'll probably propose something in the next weeks. I've currently designed a template that works in the constraint, however it misses a special case (option passed for next param): http://dpaste.dzfl.pl/b8d1fb991482 Anyway, quite faisable... --
