digitalmars.D.bugs - [Issue 11947] New: std.typecons.Proxy incorrectly handles variadic member templates
- d-bugmail puremagic.com (55/55) Jan 19 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11947
- d-bugmail puremagic.com (27/27) Jan 20 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11947
- d-bugmail puremagic.com (8/15) Jan 20 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11947
- d-bugmail puremagic.com (10/10) Feb 08 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11947
- d-bugmail puremagic.com (10/10) Mar 04 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11947
https://d.puremagic.com/issues/show_bug.cgi?id=11947 Summary: std.typecons.Proxy incorrectly handles variadic member templates Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: stanislav.blinov gmail.com 01:41:15 PST --- When forwarding member function calls, Proxy incorrectly handles cases when member template is variadic: import std.typecons : Proxy; struct RealThing { void variadic(T...)(T args) {} } struct Impostor { private RealThing p; mixin Proxy!p; } void main() { Impostor test; test.variadic(); // ok test.variadic("hello"); // error instantiating } Proposed solution: // Original (std.typecons 3884): // member template template opDispatch(T...) { auto ref opDispatch(this X, Args...)(auto ref Args args){ return mixin("a."~name~"!T(args)"); } } // Change to (std.typecons 3884): // member template template opDispatch(T...) { auto ref opDispatch(this X, Args...)(auto ref Args args) { // T is empty, deduction is in effect static if (Args.length) { return mixin("a."~name~"!"~Args.stringof~"(args)"); } // T is explicitly specified else { return mixin("a."~name~"!T(args)"); } } } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 19 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11947 08:18:31 PST --- Proxy's opCall() seems to exhibit similar issue, when using getter property as proxy: struct RealThing { void opCall(T...)(T args) {} } struct Impostor { private RealThing p; private property RealThing* get() { return &p; } mixin Proxy!get; void opCall(T...)(T args) {} } void main() { Impostor imp; imp(); // ok imp("hello"); // error instantiating } Proposed solution (explicitly call opCall): // Original (std.typecons 3817): auto ref opCall(this X, Args...)(auto ref Args args) { return a(args); } // Change to (std.typecons 3817): auto ref opCall(this X, Args...)(auto ref Args args) { return a.opCall(args); } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 20 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11947 22:48:49 PST ---struct Impostor { private RealThing p; private property RealThing* get() { return &p; } mixin Proxy!get; void opCall(T...)(T args) {} }Uh, sloppy copy, sorry about that. Impostor should not have that opCall at all, only RealThing should. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 20 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11947 Stanislav Blinov <stanislav.blinov gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull 14:53:39 PST --- https://github.com/D-Programming-Language/phobos/pull/1914 -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 08 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11947 Stanislav Blinov <stanislav.blinov gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |thecybershadow gmail.com 09:10:12 PST --- *** Issue 12297 has been marked as a duplicate of this issue. *** -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 04 2014