В бусте можно ли удалить данный boost::accumulators::tag
динамически от accumulator_set
?
typedef boost::accumulators::features <
boost::accumulators::tag::count,
boost::accumulators::tag::max,
boost::accumulators::tag::min,
boost::accumulators::tag::mean,
boost::accumulators::tag::variance,
boost::accumulators::tag::skewness,
boost::accumulators::tag::kurtosis,
> StatisticalFeatures;
accumulator_set<double, boost::accumulators::stats<StatisticalFeatures>> acc;
Или, альтернативно, назначить новый boost::accumulators::stats
контейнер к accumulator_set
где я могу указать некоторые boost::accumulators::tag
из строки Например, если строка min,max,mean
тогда я хочу создать новый
accumulator_set<double,bost::accumulators::stats<boost::accumulators::tag::min,boost::accumulators::tag::max,boost::accumulators::tag::mean>> acc
,
Заранее спасибо за совет.
Краткий ответ: нет.
Более длинный ответ: со стиранием типов и большим количеством метапрограммирования шаблонов все возможно.
Если вы чувствуете, что вам действительно это нужно, начните с использования, например, функции Boost или Boost Erasure, или опубликуйте вопрос с более подробной целью и местом, где вы застряли. Есть слишком много способов, которыми можно интерпретировать «назначить новый контейнер Boost :: аккумуляторы :: статистика для набора аккумуляторов, в котором я могу указать какой-нибудь Boost :: аккумуляторы :: тег из строки».
Если комбинации ограничены, Boost Variant — ваш друг. В противном случае, Boost Any и … множество особых случаев для извлечения результатов. Это будет / много / метапрограммирование, хотя
На самом деле, если вы можете себе это позволить, почему бы не использовать набор аккумуляторов «max featured» и раскрыть его только один раз в соответствии с текстовой конфигурацией? Вы бы выполнили больше работы, чем необходимо во время выполнения, но вы бы сэкономили огромные усилия на стороне разработки.