/* REQUIRED_ARGS: | |
* OPTIONAL_ARGS: | |
*/ | |
// https://issues.dlang.org/show_bug.cgi?id=17246 | |
struct Foo | |
{ | |
int* rc; | |
this(int val) | |
{ | |
rc = new int; | |
(*rc) = 1; | |
} | |
this(this) | |
{ | |
(*rc)++; | |
} | |
~this() | |
{ | |
if (rc) | |
{ | |
assert(*rc > 0); | |
(*rc)--; | |
} | |
} | |
} | |
struct Bar | |
{ | |
Foo foo; | |
this(Foo foo, bool) | |
{ | |
this.foo = foo; | |
} | |
} | |
bool fun(bool val) { return !val; } | |
auto genBar(bool flag) | |
{ | |
return flag ? Bar() : Bar(Foo(10), fun(!flag)); | |
} | |
int main(string[] args) | |
{ | |
auto bar = genBar(args.length == 0); | |
return 0; | |
} |