o Your class don't support the weak flags. Otoh it's not possible to do transparently since set_weak_flag currently doesn't try lfuns.
o cast: The casts to int, float, string and multiset are meaningless since they won't work.
o No `+=? Ok, it's optional but allows for good optimization.
o Most C level functions that take mappings don't accept objects, so explicit casting will be necessary there.