import std.exception; struct AA(Key, Val) { Val[Key] aa; alias aa this; void opIndexAssign(inout Val value, Key key) pure { aa[key] = value; } } void main() { AA!(string, int) a; //compile error -- no property 'remove' for type 'CheckedAA!(string, int)' a.remove("aaa"); } What's wrong here?