On 01/15/2018 07:27 AM, Meta wrote:
On Monday, 15 January 2018 at 13:55:57 UTC, Nordlöw wrote:

The function `remove` is a templated member of a struct instance `x`.

Can you give a bit more context? The following code does not cause a compile error:

import std.stdio;
import std.algorithm;

void main()
{
     auto arr = [1, 2, 3];
     arr.remove!(_ => _ == 1);
     writeln(arr);
}

Or was that code meant as an example?

import std.algorithm;

struct S {
    int[] elements;

    void remove(alias func)() {
        // ...
    }

    void remove(string s)() {
        foreach (a; elements) {
            const cond = mixin(s);
            if (cond) {
                // do remove
            }
        }
    }
}

void main()
{
    auto s = S();
    s.remove!"a == 11"();

    // Fails compilation:
    // s.remove!(_ => _ == 1);
}

Ali

Reply via email to