Empty Associative Aarray Literal

2016-03-03 Thread Jack Stouffer via Digitalmars-d-learn
I want to have one of the parameters on a function be optional. 
The problem is, is that it's a AA and D does not seem to support 
empty AA literals. Observe:


string func(int a, int[int] b = []) {
return "mem1";
}

void main() {
func(1);
}

$ dmd test
test.d(8): Error: cannot implicitly convert expression ([]) of 
type void[] to int[int]


This doesn't work either

string func(int a, int[int] b = int[int].init) {
return "mem1";
}

void main() {
func(1);
}





Re: Empty Associative Aarray Literal

2016-03-03 Thread cym13 via Digitalmars-d-learn

On Thursday, 3 March 2016 at 22:06:54 UTC, Jack Stouffer wrote:
I want to have one of the parameters on a function be optional. 
The problem is, is that it's a AA and D does not seem to 
support empty AA literals. Observe:


string func(int a, int[int] b = []) {
return "mem1";
}

void main() {
func(1);
}

$ dmd test
test.d(8): Error: cannot implicitly convert expression ([]) of 
type void[] to int[int]


This doesn't work either

string func(int a, int[int] b = int[int].init) {
return "mem1";
}

void main() {
func(1);
}


Use null:

string func(int a, int[int] b = null) {
return "mem1";
}

void main() {
func(1);
}


Re: Empty Associative Aarray Literal

2016-03-03 Thread Ali Çehreli via Digitalmars-d-learn

On 03/03/2016 02:06 PM, Jack Stouffer wrote:


This doesn't work either

string func(int a, int[int] b = int[int].init) {


Parentheses around int[int] works though. I don't know whether it's a bug.

string func(int a, int[int] b = (int[int]).init) {

Ali