Thread overview | ||||||
---|---|---|---|---|---|---|
|
December 01, 2010 [Issue 5295] New: Template basename recognized as valid type inside template - shouldn't be. | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=5295 Summary: Template basename recognized as valid type inside template - shouldn't be. Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: ah08010-d@yahoo.com --- Comment #0 from Austin Hastings <ah08010-d@yahoo.com> 2010-12-01 03:45:56 PST --- This code runs with dmd -run under 2.49. Note the array C[], which I don't think is valid. (If this IS considered valid, can someone explain the semantics to me?) ====== module scratch; class C(T) { C[] ary; void foo() { foreach( a; ary ) { a.bar(); } } void bar() { } } void main() { auto c = new C!int; c.foo(); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
December 01, 2010 [Issue 5295] Template basename recognized as valid type inside template - shouldn't be. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Austin Hastings | http://d.puremagic.com/issues/show_bug.cgi?id=5295 Simen Kjaeraas <simen.kjaras@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |simen.kjaras@gmail.com --- Comment #1 from Simen Kjaeraas <simen.kjaras@gmail.com> 2010-12-01 03:53:14 PST --- This seems not to be mentioned on http://digitalmars.com/d/2.0/template.html, but it is well-known and oft-used. The idea is that instead of having to type Foo!(int, bar, 42, MeaningOfLiff) everytime you want typeof(this), you can just use Foo. Foo!(int, bar, 42, MeaningOfLiff) still works, so nothing (as far as I can see) is lost. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
December 01, 2010 [Issue 5295] Template basename recognized as valid type inside template - shouldn't be. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Austin Hastings | http://d.puremagic.com/issues/show_bug.cgi?id=5295 Simen Kjaeraas <simen.kjaras@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |blood.of.life@gmail.com --- Comment #2 from Simen Kjaeraas <simen.kjaras@gmail.com> 2010-12-01 05:37:26 PST --- *** Issue 5298 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
December 04, 2010 [Issue 5295] Template basename recognized as valid type inside template - shouldn't be. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Austin Hastings | http://d.puremagic.com/issues/show_bug.cgi?id=5295 Steven Schveighoffer <schveiguy@yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |schveiguy@yahoo.com Resolution| |INVALID --- Comment #3 from Steven Schveighoffer <schveiguy@yahoo.com> 2010-12-03 18:20:05 PST --- It's not explicitly mentioned, but it is covered indirectly. Note that: class C(T) { ... } is equivalent to template C(T) { class C { ... } } If you look at it this way, then it becomes: template C(T) { class C { C[] ary; ... } } when you look at the class definition, it makes sense that C inside the class refers to the class itself. as it would outside the template. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation