std.algorithm.remove from array of custom classes?
Tim K. via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Dec 9 05:05:31 PST 2015
Hi!
I'm trying to remove an item from an array of objects. But I get
error messages when compiling (see below) which I do not
understand. I figured I had to override opEquals for it to work,
but no.
How do I get this to work?
Regards
class A
{
this(string si, uint ui) { s = si; u = ui; }
string s;
uint u;
override bool opEquals(Object obj)
{
A o = cast(A)obj;
return (s == o.s) && (u == o.u);
}
}
int main(string[] argv)
{
import std.stdio: writeln;
import std.algorithm: remove;
A a = new A("a", 1);
A b = new A("b", 2);
A[] as = [a, b];
as.remove(a);
writeln(as);
return 0;
}
Error:
/usr/include/dmd/phobos/std/algorithm/mutation.d(1503): Error:
template std.range.primitives.popFrontExactly cannot deduce
function from argument types !()(A[], A), candidates are:
/usr/include/dmd/phobos/std/range/primitives.d(1791):
std.range.primitives.popFrontExactly(Range)(ref Range r, size_t
n) if (isInputRange!Range)
/usr/include/dmd/phobos/std/algorithm/mutation.d(1504): Error:
template std.range.primitives.popFrontExactly cannot deduce
function from argument types !()(A[], A), candidates are:
/usr/include/dmd/phobos/std/range/primitives.d(1791):
std.range.primitives.popFrontExactly(Range)(ref Range r, size_t
n) if (isInputRange!Range)
/usr/include/dmd/phobos/std/algorithm/mutation.d(1505): Error:
cannot implicitly convert expression (from) of type dummy.A to
ulong
dummy.d(21): Error: template instance
std.algorithm.mutation.remove!(cast(SwapStrategy)2, A[], A) error
instantiating
More information about the Digitalmars-d-learn
mailing list