Should this compile?
Timon Gehr via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Aug 26 13:02:34 PDT 2015
On 08/26/2015 09:55 PM, Timon Gehr wrote:
> On 08/25/2015 08:29 PM, Vladimir Panteleev wrote:
>>
>> I think this is a bug, but is easily worked around with:
>>
>> auto test(string a) {
>> return .test(a, "b");
>> }
>>
>> I suspect that the reason the error occurs, is that the auto return type
>> automatically rewrites the function declaration into an eponymous
>> template declaration. ...
>
> No true. In fact, doing so manually works around the problem. :o)
>
> This compiles and runs:
>
> import std.stdio;
> import std.range : chain;
>
> auto test()(string a) {
> return test(a,"b");
> }
>
> auto test(string a,string b) {
> return chain(a,b);
> }
>
> void main() {
> writeln(test("a"));
> }
Another workaround is to order the declarations in the opposite way:
import std.stdio;
import std.range : chain;
auto test(string a,string b) {
return chain(a,b);
}
auto test(string a) {
return test(a,"b");
}
void main() {
writeln(test("a"));
}
More information about the Digitalmars-d-learn
mailing list