February 12, 2017 [Issue 17177] New: AutoImplement fails on function overload sets with "cannot infer type from overloaded function symbol" | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=17177 Issue ID: 17177 Summary: AutoImplement fails on function overload sets with "cannot infer type from overloaded function symbol" Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody@puremagic.com Reporter: alexandru.ermicioi@gmail.com Given following code: import std.meta; import std.typecons; import std.traits; class ProxyablePerson { private { string surname_; } public { int surname(string surname) { return 0; } int surname() { return 0; } } } string how(C, alias fun)() { string stmt; static if (!is(ReturnType!fun == void)) { stmt ~= " return parent(args); "; } else { stmt ~= " parent(args); "; } return stmt; } alias Proxy = AutoImplement!(ProxyablePerson, how, templateNot!isFinalFunction); void main() { } AutoImplement fails on surname overload set with following error: /usr/include/dmd/phobos/std/typecons.d-mixin-3579(3584,15): Error: cannot infer type from overloaded function symbol &super.surname /usr/include/dmd/phobos/std/typecons.d-mixin-3579(3592,15): Error: cannot infer type from overloaded function symbol &super.surname src/app.d(36,15): Error: template instance std.typecons.AutoImplement!(ProxyablePerson, how, templateNot) error instantiating Note: leaving one function from overload set (so no surname overload set is present), will compile ok without any error. -- |
Copyright © 1999-2021 by the D Language Foundation