/ / メモ
2010-01-19

javascript 見たいな、
opDispatch と Variant を使った、
任意の名前の任意の値を格納できるクラスを作ろうとした。

で、 Variant を要素に持つ連想配列を作って、
dmd 2.039 でコンパイルしたら dmd がこけた。

import std.stdio;
import std.variant;

void main()
{
    Variant[string] va;

    writeln(va.length); //Assertion failure: 'impl' on line 3882 in file 'mtype.c'
}

ただの構造体でもやってみたら、
要素が構造体の連想配列が作れた。

import std.stdio;

struct S{}

void main()
{
    S[string] sa;

    writeln(sa.length); //OK
}

import std.variant を追加してみる。

import std.stdio;
import std.variant;

struct S{}

void main()
{
    S[string] sa;

    writeln(sa.length); //Assertion failure: 'impl' on line 3882 in file 'mtype.c'
}

えー

std.variant をインポートすると、要素が構造体の連想配列が作れない?

import std.variant assoc array Issue で検索

これっぽい?
digitalmars.D - Variant[string] associative array ... fail?`
Issue 2451 - Adding structs that use opAssign or postblit to an AA is broken

2010-10-20 追記
std.variantをimportするだけでコンパイルエラー - はてなかよっ!
Issue 3552 - ICE(mtype.c): declaring a variable called 'AssociativeArray' then using an AA.

なるほど、 AssociativeArray って名前がだめなのか

import std.stdio;

struct S{}

void main()
{
    int AssociativeArray;
    S[string] sa;

    writeln(sa.length); //Assertion failure: 'impl' on line 3882 in file 'mtype.c'
}

トラックバック http://mikanya.dip.jp/memo/2010-01-19-1