Можно ли упростить приведенный ниже код, используя boost :: apply_visitor? В настоящее время используется x.which () для проверки типов.
using vTypes = boost::variant<int, std::string>;
struct times_two_visitor
{
vTypes x;
int val;
// template <typename T>
times_two_visitor &operator+(int y)
{
/* adding int values. */
val = val + y;
if (x.which() == 0)
x = boost::get<int>(x) + y;
if (x.which() == 1)
x = boost::get<std::string>(x) + std::to_string(y);
return *this;
}
};