#include <variant>
#include <vector>
#include <algorithm>
#include <string>
#include <iostream>

using namespace std;
static const int NAME_SIZE = 5;
using V = variant<int,string,double>;
int count(const std::vector<V>& vec) {
    struct Visitor
    {
        Visitor() : counter_(0) {}
        void operator()(const int& i) { counter_ += i; }
        void operator()(const string& s) { counter_ += s.size(); }
        void operator()(const double& d) { }
        int counter_;
    } visitor;
    for_each(vec.begin(), vec.end(), [&](const V& v){ std::visit(visitor, v); } );
    return visitor.counter_;
};

int main() {
    vector<V> v;
    v.push_back(NAME_SIZE);
    v.push_back(string("ZPR"));
    v.push_back(1.0);
    cout << count(v) << endl;
    return 0;
};
