我有像这样的静态访客设置
struct visitor : public boost::static_visitor<std::string&> {
obj& m_data;
visitor(obj& data) : m_data(data) {}
std::string& operator()(key_type_1& k1) const {
return m_data.get(k1);
}
std::string& operator()(key_type_2& k2) const {
return m_data.get(k2);
}
}
没有编译错误,一切看起来都不错。 但是,这个测试用例失败了 -
std::string x = boost::apply_visitor(visitor(data1), variant);
std::string y = boost::apply_visitor(visitor(data2), variant);
第二个调用仍在尝试从data1中检索。我在这里做错了吗?