Недавно я открыл отличную библиотеку boost:: accumulators, и я хотел бы использовать ее для замены некоторого кода, который накапливает статистику.
Одна вещь, которую я не могу найти в документации, - это возможность суммировать два набора аккумуляторов, как в случае оператора + =
Пример:
using namespace boost::accumulators;
typedef accumulator_set<double, features<tag::variance> > AccumSet;
class Foo {
AccumSet acc;
public:
Foo& operator+=(const Foo& that) {
this->acc += that.acc; // error! no such operator
return *this;
}
double GetVariance() { return variance(acc); }
};
Как я могу достичь этого, используя доступный API? Я не знаю, может ли это быть реализовано для всех типов аккумуляторов в библиотеке (возможно, не для хвоста), но это может быть важно для важных вещей, таких как подсчет, сумма, значение, момент, ковариация и т.д.