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 对象的生命周期内,该字符串值会发生更改。在这种情况下,通过构造函数传递字符串不是一个选项。
Append
对象,然后在每次调用之前设置特定的值,甚至不需要了解任何其他依赖关系。 - MankarseVisitor
的相关部分,然后调用apply_visitor
。我想不到一种在类型系统中强制执行它的方法,但是你可以保留一个跟踪辅助函数是否被调用的bool
,如果没有调用,则会断言。 - Mankarse