digitalmars.D.bugs - [Issue 1900] New: Template overload sets & traits templates
- d-bugmail puremagic.com (64/64) Mar 09 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (22/22) Aug 09 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (16/16) Nov 09 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (13/20) Nov 10 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (12/12) Feb 14 2013 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (11/11) Jul 16 2013 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (15/15) Jul 17 2013 http://d.puremagic.com/issues/show_bug.cgi?id=1900
- d-bugmail puremagic.com (9/9) Jul 17 2013 http://d.puremagic.com/issues/show_bug.cgi?id=1900
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Summary: Template overload sets & traits templates Product: D Version: 2.012 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: wbaxter gmail.com I'm not sure this kind of thing is supposed to work with template overload sets, but I hope it is supposed to, as it is a pattern I see often in C++ code. The idea is to define some "Traits" templates that define various compile-time aspects of a particular type. ---- module main; import std.stdio; import A; import B; import generic; void main() { AClass a; BClass b; writefln("Traits!(AClass).name: ", Traits!(AClass).name); writefln("Traits!(BClass).name: ", Traits!(BClass).name); writefln("Traits!(int).name: ", Traits!(int).name); } ---- module A; class AClass { } template Traits(T : AClass) { enum string name = "AClass"; } ---- module B; class BClass { } string func(BClass b) { return "BClass"; } template Traits(T : BClass) { enum string name = "BClass"; } ---- module generic; struct Traits(T) { const string name = "any"; } ---- Right now I get: main.d(18): template instance Traits is not a template declaration, it is a overloadset main.d(18): Error: undefined identifier Traits!(AClass).name (Also note the grammar error in the message "it is a overload set".) --
Mar 09 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1900 At least, there should be a way to merge template overload sets as it is the case with function overload sets. alias A.Traits Traits; alias B.Traits Traits; alias generic.Traits Traits; Error: declaration Traits is already defined Another use case: ---- template Foo(T) { template Bar(U : T) { } } mixin Foo!(int) A; mixin Foo!(char) B; alias Bar!(int) bar; //error ---- Error: template instance Bar is not a template declaration, it is a overloadset --
Aug 09 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Eldar Insafutdinov <e.insafutdinov gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |e.insafutdinov gmail.com 22:34:01 PST --- Seems like there has not been an update on this one for quite along time. That is obviously a big issue, there should be a way to merge template overload sets, otherwise some great opportunities in using templates are lost. I am using templates in Qt bindings for specifying some compile-time information for types. My usecase is very similar to that provided by Bill. I would really like for this one to be resolved. Thanks. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 09 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1900Seems like there has not been an update on this one for quite along time. That is obviously a big issue, there should be a way to merge template overload sets, otherwise some great opportunities in using templates are lost. I am using templates in Qt bindings for specifying some compile-time information for types. My usecase is very similar to that provided by Bill. I would really like for this one to be resolved. Thanks.I think I ended up working around this by putting the essential information into the classes themselves, and then having one Traits template that covered built-in types. Another big template did bunches of static structural tests to tease the needed information out of a class. In my case that was sufficient. But it's certainly more cumbersome to deal with. Perhaps you can explain your case in a little more detail and we might be able to come up with some workaround? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 10 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull Platform|x86 |All OS/Version|Windows |All https://github.com/D-Programming-Language/dmd/pull/1660 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 14 2013
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/e59a33f2b639dc9a6eb431ebcf694f533916f038 fix Issue 1900 - Template overload sets & traits templates https://github.com/D-Programming-Language/dmd/commit/cc6b7372f2efffd4c5c0314373af3b595ba06a2c Issue 1900 & 8352 & 9235 - Implement Template Overload Set -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 16 2013
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid Status|NEW |RESOLVED Depends on| |10658 Resolution| |FIXED Template overload set has been implemented in git head. But, merging overload set by using alias declaration is not yet implemented. See bug 10658. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 17 2013
http://d.puremagic.com/issues/show_bug.cgi?id=1900 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 17 2013