Как упростить этот Boost :: Variant? - PullRequest
0 голосов
/ 01 ноября 2019

Можно ли упростить приведенный ниже код, используя 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;
}
};
...