Надо обьект, который будет предоставлять интерфейс подобный std::map<int, int> но при том держать/актуализировать сумму всех значений.
template <typename Element, auto... keys>
class MappedSum;
enum Keys { ONE, TWO, THREE };
MappedSum<int, ONE, TWO, THREE> sum = 0.0;
sum[TWO] = 10;
sum[THREE] = 3;
assert(sum == 13); // 0 + 10 + 3
sum[ONE] = -4;
assert(sum == 9); // -4 + 10 + 3
sum[THREE] = -3;
assert(sum == 3); // -4 + 10 + -3
Ключи известны во время компиляции (т.е. размер обьекта статический). Надо чтоб сумма была доступна быстро и размер сруктуры минимально возможный.
Может есть что-то такое в std или boost?
Самому написать не сложно, я даже знаю как. Просто велосипедить не хочется.