typedef boost::variant<int, double> Type;
class Append: public boost::static_visitor<>
{
public:
void operator()(int)
{}
void operator()(double)
{}
};
Type type(1.2);
Visitor visitor;
boost::apply_visitor(visitor, type);
是否可以更改访问者以使其接收额外数据,如下所示:
class Append: public boost::static_visitor<>
{
public:
void operator()(int, const std::string&)
{}
void operator()(double, const std::string&)
{}
};
此字符串值在 Append 对象的生命周期内发生变化。在这种情况下,通过构造函数传入字符串不是一种选择。