Thread overview |
---|
December 08, 2008 [Issue 2499] New: Template alias default value cannot be template instantiation | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2499 Summary: Template alias default value cannot be template instantiation Product: D Version: 2.019 Platform: PC OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: schveiguy@yahoo.com Simple case: void foo(T)() { } struct f(alias func=foo!(int)) { } void main() { f!() myf; } Error in 1.036: Error: foo!(int) is not a symbol Error in 2.019: testtemplatealias.d(5): Error: foo!(int) is used as a type testtemplatealias.d(11): template instance f!() does not match template declaration f(alias func = foo!(int)) testtemplatealias.d(11): Error: f!() is used as a type testtemplatealias.d(11): variable testtemplatealias.main.myf voids have no value Workaround is to alias the default parameter before using as the default parameter: alias foo!(int) defaultFoo; struct f(alias func=defaultFoo) { } -- |
December 08, 2008 [Issue 2499] Template alias default value cannot be template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2499 ------- Comment #1 from schveiguy@yahoo.com 2008-12-08 15:47 ------- Note that in the case where you want the default value to depend on other template parameters, such as: struct f(T, alias func=foo!(T)) This is much tricker. I found that the cleanest way to workaround is to avoid default parameters, and just alias the less specific ones: struct f(T, alias func) { } template f(T) { alias f!(T, foo!(T)) f; } -- |
December 25, 2008 [Issue 2499] Template alias default value cannot be template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2499 bugzilla@digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from bugzilla@digitalmars.com 2008-12-25 04:39 ------- Fixed dmd 1.038 amd 2.022 -- |
Copyright © 1999-2021 by the D Language Foundation