在访问者函数中修改变体是否安全?
struct visitor {
visitor(std::variant<int, std::string> & var) : var(var){}
void operator()(int i) {
var = std::to_string(i);
}
void operator()(const std::string & s) {
var = atoi(s.c_str());
}
std::variant<int, std::string> & var;
};
void convert(std::variant<int, std::string> & var) {
std::visit(visitor{var}, var);
}
在上面示例中的字符串引用函数中,我假设字符串引用在分配新值之前是有效的。但是标准是否说明了这个用例的有效性?