On Wednesday, 22 May 2013 at 01:04:35 UTC, Wyatt wrote:

I was trying to do this as a way to obtain a concise syntax for manipulating a tree of elements deserialized at runtime, ex:
data["foo"]["bar"] = "baz";
assert( data["foo"]["bar"] == "baz" );
foreach( subtree; data["foo"] )
    doSubtreeOp( subtree );

Having to place .get!(Variant[]) between each dereference will defeat my use case.

Associative arrays fail in the same way, btw. I'm using integers in the first example because it should be simpler to get those right.

I expected this to work because the value of 'ender[0]' will be a variant that contains an array, and such a variant should be able to index the contained array because of its opIndex overload.

if this is a tree anyway better use custom node types.
so why not do this and overload opindex? unlike c++ u can put anything as key. i can't say from this example what types you are going to use but if it's only strings this should be very easy to implement.

Reply via email to