simple syntax issue with template
Dmitry Olshansky
dmitry.olsh at gmail.com
Mon Jun 13 05:21:40 PDT 2011
On 13.06.2011 16:03, Lloyd Dupont wrote:
> I'm trying to create 2 extra method for arrays ("range" would be
> better, though I don't quite understand what is a "range")
> Although I have some indecipherable (to me) compiler error...
>
> What's wrong with the code below?
> ==================
> import std.algorithm;
>
> public:
>
> void remove(T)(ref T[] array, T element)
> {
> auto index = array.countUntil!("a == b", T[], T)(array, element);
> removeAt(index);
> }
>
> void removeAt(T)(ref T[] array, sizediff_t index)
> {
> if(index < 0 || index >= array.length)
> return;
> array.replaceInPlace(index, index + 1, []);
> }
>
>
> unittest
> {
> auto a = [1, 3, 4];
> a.remove(3);
> assert(a == [1, 4]);
> }
> ======================
It's not exactly clear what's your problem, since you haven't put a
tiniest description of what the compiler outputs.
still:
array.countUntil!("a == b", T[], T)(array, element);
should be ether
countUntil!("a == b", T[], T)(array, element);
or:
array.countUntil!("a == b", T[], T)( element);
also drop thouse ugly explicit template params (the compiler can and
would figure them out anyway):
array.countUntil!"a == b"(element); //same as default
array.countUntil(element);
another one:
removeAt(index);
should be array.removeAt(index) or removeAt(array, index);
And last but not least there is remove in Phobos, it's just link to it
from summary table is constantly getting screwed up.
--
Dmitry Olshansky
More information about the Digitalmars-d-learn
mailing list