Pretty sure it's guaranteed - check the `operator[](const std::string &key)` in CVariant - it checks the variant type before it checks the map, and returns a CVariant in the case it's the wrong type.