Mark Isaacson:

Got it, no native support. Most unfortunate.

What native support are you talking about?


I've always been vehemently against losing self-documentation via the std::pair/tuple based solution to the problem.

What self documentation are you losing in D?


I ended up rolling my own solution that lets you give meaningful names to the wrapper struct's data members: http://pastebin.com/cKLccqFn

What's bad about this?

void main() {
    import std.stdio, std.container, std.typecons;

    alias Two = Tuple!(string,"str", int, "bob");
    alias MyTree = RedBlackTree!(Two, q{a.str < b.str}, false);

auto map = new MyTree(Two("hello", 5), Two("zbd", 3), Two("abc", 9));

    map[].writeln;
    auto rng = map[];
    assert(rng.front == map.Elem("abc", 9));
    assert(rng.front.str == "abc");
    assert(rng.front.bob == 9);
}


Bye,
bearophile

Reply via email to