std.algorithm.sort with copy constructors
    Gregor Mückl 
    gregormueckl at gmx.de
       
    Mon Apr 13 13:27:09 UTC 2020
    
    
  
Hi!
Consider the following code:
---
import std;
struct S {
     pure this(ref return scope const S rhs) nothrow @nogc {
         this.x = x;
     }
     int x;
}
void main()
{
     S[] array = new S[10];
     array.sort!("a.x < b.x", SwapStrategy.stable);
}
---
In this program, sort compiles only if the copy constructor is 
decorated with pure, nothrow and @nogc. This is very limiting. Is 
there a way to get rid of nothrow and @nogc on the copy 
constructor and still use sort?
My actual use case, inefficient as it may be, is to sort structs 
that use copy constructors to enforce deep copies of their 
contents. So there's liberal use of .dup in them, which obviously 
is neither nothrow nor @nogc.
Cheers,
Gregor
    
    
More information about the Digitalmars-d-learn
mailing list