Mutable enums
    Jonathan M Davis 
    jmdavisProg at gmx.com
       
    Sun Nov 13 15:07:46 PST 2011
    
    
  
On Sunday, November 13, 2011 17:54:14 bearophile wrote:
> Do you remember if this bug is in Bugzilla?
> 
> 
> import std.algorithm;
> void main() {
>     enum a = [3, 1, 2];
>     enum s = sort(a);
>     assert(equal(a, [3, 1, 2]));
>     assert(equal(s, [1, 2, 3]));
> }
It's not a bug. Those an manifest constants. They're copy-pasted into whatever 
code you used them in. So,
enum a = [3, 1, 2];
enum s = sort(a);
is equivalent to
enum a = [3, 1, 2];
enum s = sort([3, 1, 2]);
a isn't altered at all, because a doesn't really exist. Notice that
assert(equal(a, [3, 1, 2]));
still passes. It's equivalent to
assert(equal([3, 1, 2], [3, 1, 2]));
- Jonathan M Davis
    
    
More information about the Digitalmars-d-learn
mailing list