digitalmars.D.learn - Using RefCounted in recursive structures and templates
- Lodovico Giaretta (20/20) May 10 2016 Hi,
- ag0aep6g (9/14) May 10 2016 This used to work with 2.067. I've filed a phobos regression for this
- Lodovico Giaretta (2/19) May 11 2016 Thank you very much.
- ag0aep6g (3/8) May 10 2016 I think this is expected. Can't have cycles like that in template
Hi, I'm trying to use std.typecons.RefCounted on recursive structures to emulate garbage-collected classes, but it doesn't work, because the RefCounted implementation ends up creating a cycle in the structure hierarchy. import std.typecons: RefCounted; struct S { RefCounted!S s; // error: struct S no size yet for forward reference } Even worst when I try to mix this with templates: alias Node(T) = RefCounted!(_Node!T); struct _Node(T) { Node!T parent; // error: recursive template expansion } Is there some way to bypass these limitations, and use refcounted structures like classes? Thank you in advance.
May 10 2016
Am 10.05.2016 um 21:43 schrieb Lodovico Giaretta:import std.typecons: RefCounted; struct S { RefCounted!S s; // error: struct S no size yet for forward reference }This used to work with 2.067. I've filed a phobos regression for this very code, and two related dmd issues with different reductions: https://issues.dlang.org/show_bug.cgi?id=16011 - [REG2.068] recursive RefCounted used to work https://issues.dlang.org/show_bug.cgi?id=16012 - [REG2.070] forward reference with alias this https://issues.dlang.org/show_bug.cgi?id=16013 - [REG2.072a] ICE with mutually dependent structs and alias this
May 10 2016
On Tuesday, 10 May 2016 at 22:10:06 UTC, ag0aep6g wrote:Am 10.05.2016 um 21:43 schrieb Lodovico Giaretta:Thank you very much.import std.typecons: RefCounted; struct S { RefCounted!S s; // error: struct S no size yet for forward reference }This used to work with 2.067. I've filed a phobos regression for this very code, and two related dmd issues with different reductions: https://issues.dlang.org/show_bug.cgi?id=16011 - [REG2.068] recursive RefCounted used to work https://issues.dlang.org/show_bug.cgi?id=16012 - [REG2.070] forward reference with alias this https://issues.dlang.org/show_bug.cgi?id=16013 - [REG2.072a] ICE with mutually dependent structs and alias this
May 11 2016
Am 10.05.2016 um 21:43 schrieb Lodovico Giaretta:alias Node(T) = RefCounted!(_Node!T); struct _Node(T) { Node!T parent; // error: recursive template expansion }I think this is expected. Can't have cycles like that in template instantiations.
May 10 2016