Doing two lookups for an add seems very expensive for a basic type, and not very difficult to avoid. We can add a bool "exists" that starts out false and gets set to true on add if you're worried about that case, or check the default constructors, or something.