Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
April 29, 2009 [Issue 2913] New: aliasing a ref type is not possible | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2913 Summary: aliasing a ref type is not possible Product: D Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: andrei@metalanguage.com alias ref int rint; rint foo() { static int x; return x; } void main() { auto p = &(foo()); } This doesn't work. It led me to write the ugliest code I have ever written. Search std.range for "mixin" if you want to see ugly stuff. -- |
April 30, 2009 [Issue 2913] aliasing a ref type is not possible | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2913 ------- Comment #1 from kamm-removethis@incasoftware.de 2009-04-30 02:40 ------- I'm not sure allowing that alias is a good idea, as ref int and int still name the same type. If that alias worked, wouldn't you expect alias ref int rint; int i = 3; rint ri = i; ri = 4; assert(i == 4); -- |
April 30, 2009 [Issue 2913] aliasing a ref type is not possible | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2913 ------- Comment #2 from andrei@metalanguage.com 2009-04-30 08:12 ------- (In reply to comment #1) > I'm not sure allowing that alias is a good idea, as ref int and int still name the same type. If that alias worked, wouldn't you expect > > alias ref int rint; > int i = 3; > rint ri = i; > ri = 4; > assert(i == 4); > The ref would be only effective in a function signature. This can be done (I discussed it with Walter). The problem is, Walter has a lot on his plate already. Yet that doesn't make my code look any better :o). -- |
May 04, 2009 [Issue 2913] aliasing a ref type is not possible | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2913 ------- Comment #3 from maxmo@pochta.ru 2009-05-04 08:44 ------- dup of bug 2753? -- |
December 23, 2012 [Issue 2913] aliasing a ref type is not possible | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2913 Andrej Mitrovic <andrej.mitrovich@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich@gmail.com --- Comment #4 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2012-12-23 10:45:12 PST --- (In reply to comment #2) > (In reply to comment #1) > > I'm not sure allowing that alias is a good idea, as ref int and int still name the same type. If that alias worked, wouldn't you expect > > > > alias ref int rint; > > int i = 3; > > rint ri = i; > > ri = 4; > > assert(i == 4); > > > > The ref would be only effective in a function signature. So would that code error at compile-time or just silently compile and fail at runtime as if the ref didn't exist? It's tricky business.. But there's definitely a problem of not being able to pass around 'ref' in metaprogramming. The classic example being std.signal, where you can't define a signal with ref parameters: struct S { // would allow connecting to 'void f(ref int) { }' mixin Signal!(ref int); } -- 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