digitalmars.D.bugs - [Issue 2512] New: ParameterTypeTuple do not support opCall
- d-bugmail puremagic.com (47/48) Dec 13 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2512
- d-bugmail puremagic.com (11/11) Dec 13 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2512
- d-bugmail puremagic.com (27/27) May 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=2512
http://d.puremagic.com/issues/show_bug.cgi?id=2512 Summary: ParameterTypeTuple do not support opCall Product: D Version: 2.021 Platform: PC OS/Version: All Status: NEW Severity: normal Priority: P3 Component: Phobos AssignedTo: bugzilla digitalmars.com ReportedBy: rayerd.wiz gmail.com The std.traits.ParameterTypeTuple do not support a class object/type and a struct object/type within opCall. The ParameterTypeTuple is recommended to be changed like this.--- traits.d Tue Nov 25 00:24:50 2008 +++ traits.d.new Sun Dec 14 04:28:31 2008 -93,7 +93,12 */ template ParameterTypeTuple(alias dg) { - alias ParameterTypeTuple!(typeof(dg)) ParameterTypeTuple; + static if (is(dg == class)) + alias ParameterTypeTuple!(dg.opCall) ParameterTypeTuple; + else static if (is(dg == struct)) + alias ParameterTypeTuple!(dg.opCall) ParameterTypeTuple; + else + alias ParameterTypeTuple!(typeof(dg)) ParameterTypeTuple; } /** ditto */ <<<<<<<<<<<<<<<<<<<<<< import std.traits; class C { int opCall(int,double){return 1;} } struct S { int opCall(int,long){return 1;} } void main() { static assert(is(ParameterTypeTuple!(C)[0] == int)); static assert(is(ParameterTypeTuple!(S)[1] == long)); C c; static assert(is(ParameterTypeTuple!(c)[1] == double)); S s; static assert(is(ParameterTypeTuple!(s)[0] == int)); } --
Dec 13 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2512 rayerd.wiz gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|bugzilla digitalmars.com |rayerd.wiz gmail.com Status|NEW |ASSIGNED Created an attachment (id=282) --> (http://d.puremagic.com/issues/attachment.cgi?id=282&action=view) patch for ParameterTypeTuple --
Dec 13 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2512 Haruki Shigemori <rayerd.wiz gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED PDT --- ParameterTypeTuple supported opCall already. This code compiles and runs fine on dmd v.2.046. import std.traits; class C { int opCall(int,double){return 1;} } struct S { int opCall(int,long){return 1;} } void main() { static assert(is(ParameterTypeTuple!(C)[0] == int)); static assert(is(ParameterTypeTuple!(S)[1] == long)); C c; static assert(is(ParameterTypeTuple!(c)[1] == double)); S s; static assert(is(ParameterTypeTuple!(s)[0] == int)); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 19 2010