On 8/21/10 5:37 CDT, Eduardo Cavazos wrote:
Hello,The 'map' from std.algorithm doesn't seem to work with fixed-size arrays: ---------------------------------------------------------------------- import std.stdio ; import std.math ; import std.algorithm ; T sq ( T ) ( T x ) { return x*x ; } void main () { double [2] a = [ 1.0 , 2.0 ] ; writeln ( map ! ( sq ) ( a ) ) ; } ---------------------------------------------------------------------- $ rdmd test_map_sq_fixed_size_b.d /usr/include/d/dmd/phobos/std/algorithm.d(108): Error: template instance Map!(sq,double[2u]) does not match template declaration Map(alias fun,Range) if (isInputRange!(Range)) Is this an intended limitation? Ed
To some extent, yes; fixed-size arrays are passed by value and most of the time you don't want that with an algorithm. You have the burden to append "[]" to fixed-size arrays so they are passed inside the algorithms as dynamic-length slices.
std.algorithm could detect that and take care of that detail for you, at the cost of duplicating most function signatures.
Andrei
