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. Передача строки через конструктор в этом случае не является опцией.