Boost Accumulator 有一個不幸的怪癖,其中 api 介面在類內部使用時表現不同。
我正在嘗試在類中使用 Boost Accumulator quantile_probability,但我不知道如何使其作業。
這個問題和這個問題類似: Can boost accumulators be used as class members
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp>
#include <boost/accumulators/statistics/weighted_p_square_quantile.hpp>
#include <boost/accumulators/statistics/parameters/quantile_probability.hpp>
namespace ba = boost::accumulators;
typedef ba::accumulator_set<int64_t, ba::stats<ba::tag::weighted_p_square_quantile>, int64_t> accumulator_t;
struct Foo {
accumulator_t myAcc(ba::quantile_probability = 0.90); // Doesn't work. ERROR: ‘ba::quantile_probability’ is not a type
};
accumulator_t acc(ba::quantile_probability = 0.90); // I just fine!
uj5u.com熱心網友回復:
中的左括號accumulator_t myAcc(被決議為成員函式,在這種情況下,它定義了一個采用型別變數的函式ba::qunatile_probability。但這不是一種型別,所以它失敗了。
您需要使用=or撰寫初始化程式{,或者將其寫入建構式的初始化程式串列
struct Foo {
// One of these
accumulator_t myAcc = accumulator_t(ba::quantile_probability = 0.90);
accumulator_t myAcc{ba::quantile_probability = 0.90};
accumulator_t myAcc;
Foo() : myAcc(ba::quantile_probability = 0.90) {}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513373.html
