Hi.

Should the following code work?

import std.bitmanip;
import std.stdio;
import std.array;
import std.range:chain;

void test()
{
        int[] a=[1,2,3,4,5];
        int[] b=[5,4,3,2,1];
        int[] c = chain(a,b).array; // chain two arrays of int
        writefln("%s",c);
}

void test2()
{
        BitArray a;
        a.init([1,0,1,0]);
        BitArray b;
        b.init([0,1,0,1]);
        BitArray[] d;
        d~=a;
        d~=b;
        BitArray[] c=chain([a],[b]).array; // cannot chain two bitarrays
BitArray[] e=chain(d,d).array; // cannot chain two arrays of bitarrays
        writefln("%s",c);
}

int main(string[] args)
{
        test();
        test2();
        return 1;
}

bitmanip.d(23): Error: template std.range.chain cannot deduce function from argument types !()(BitArray, BitArray), candidates are: /usr/include/dmd/phobos/std/range.d(2493): std.range.chain(Ranges...)(Ranges rs) if (Ranges.length > 0 && allSatisfy!(isInputRange, staticMap!(Unqual, Ranges)) && !is(CommonType!(staticMap!(ElementType, staticMap!(Unqual, Ranges))) == void)) bitmanip.d(24): Error: template std.range.chain cannot deduce function from argument types !()(BitArray[], BitArray[]), candidates are: /usr/include/dmd/phobos/std/range.d(2493): std.range.chain(Ranges...)(Ranges rs) if (Ranges.length > 0 && allSatisfy!(isInputRange, staticMap!(Unqual, Ranges)) && !is(CommonType!(staticMap!(ElementType, staticMap!(Unqual, Ranges))) == void)) bitmanip.d(24): Error: declaration bitmanip.test2.c is already defined bitmanip.d(25): Error: template std.range.chain cannot deduce function from argument types !()(BitArray[], BitArray[]), candidates are: /usr/include/dmd/phobos/std/range.d(2493): std.range.chain(Ranges...)(Ranges rs) if (Ranges.length > 0 && allSatisfy!(isInputRange, staticMap!(Unqual, Ranges)) && !is(CommonType!(staticMap!(ElementType, staticMap!(Unqual, Ranges))) == void))

I cannot seem to concatenate - directly, or using chain - two bitarrays, or two arrays of bitarrays.

Reply via email to