I'm looking to go on a major debugging spree and make std.range work with const ranges. For example, the following should work:

import std.range, std.algorithm;

void main() {
    const foo = map!"a ^^ 2"([1,2,3,4,5]);
    auto myRetro = retro(foo);
}

Right now, I don't even get to the point of instantiating retro because I get the following encrypted Klingon related to its constraints:

test9.d(5): Error: template std.range.retro(R) if (isBidirectionalRange!(R)) does not match any function template declaration test9.d(5): Error: template std.range.retro(R) if (isBidirectionalRange!(R)) cannot deduce template function from argument types !()(const(Map!(result,int[])))

This error occurs because front(), popFront(), et al. aren't callable on const(Map) objects. This is pretty much a blocker for fixing the deeper issues. Does it sound reasonable to everyone that is*Range, where * is forward, bidirectional, etc. should operate on the shallowly Unqual'd version of the type, or is there some good reason I'm missing why this shouldn't be the case?
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to