Re: Using TreeSet and __gshared values
On Wednesday, 3 September 2014 at 20:10:51 UTC, ketmar via Digitalmars-d-learn wrote: On Wed, 03 Sep 2014 19:53:15 + nrgyzer via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: __gshared class members are effectively static, i.e. they are class members, not instance members. Hmm... would be nice if there were a warning/error when __gshared is used without static in a class.
Re: Using TreeSet and __gshared values
On Thu, 04 Sep 2014 08:38:50 + via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: Hmm... would be nice if there were a warning/error when __gshared is used without static in a class. would you fill enhancement request in bugzilla? signature.asc Description: PGP signature
Re: Using TreeSet and __gshared values
On Thursday, 4 September 2014 at 09:02:26 UTC, ketmar via Digitalmars-d-learn wrote: On Thu, 04 Sep 2014 08:38:50 + via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: Hmm... would be nice if there were a warning/error when __gshared is used without static in a class. would you fill enhancement request in bugzilla? https://issues.dlang.org/show_bug.cgi?id=13421
Using TreeSet and __gshared values
Hi guys, I'm having some trouble using the treeset implementation of Steven (dcollections) in conjunction with __gshared. When I do the following: class Entry { int value; this(int v) { value = v; } int opCmp(Object o) { return -1; } } void main() { auto tree = new TreeSet!Entry(); tree.add(new Entry(10)); tree.add(new Entry(20)); tree.add(new Entry(30)); foreach (ref entry; tree) { writeln(entry.value); } } I'm getting the following output: 10 20 30 But when I replace the class as follows: class Entry { __gshared int value; this(int v) { value = v; } int opCmp(Object o) { return -1; } } I'm getting the following output: 30 30 30 Do anyone have any ideas what can cause the problem?
Re: Using TreeSet and __gshared values
On Wed, 03 Sep 2014 19:53:15 + nrgyzer via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: __gshared class members are effectively static, i.e. they are class members, not instance members. i.e. class Entry { __gshared int value; ... static int getValue () { return value; } } works ok. you have only one 'value' variable for all your instances. signature.asc Description: PGP signature