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

Reply via email to