2013-10-22 66 views
0

要獲得正態分佈的概率密度函數的值,你應該例如做如何增強::綁定到boost :: math :: pdf?

boost::math::normal nd; 
std::cout << boost::math::pdf(nd, 0.0); 

。我希望通過使用boost::bind自己獲得pdf函數並嘗試

boost::function< double (double) > fpdf = boost::bind(
    boost::math::pdf, nd, _1); 

第一。這沒有奏效,顯然是因爲boost::math::pdf是模板化的。

然後我試圖

boost::function< double (double) > fpdf = boost::bind(
    boost::math::pdf< boost::math::normal, double >, nd, _1); 

,得到了從大量模板代碼,所述爲compiler error C2784之一產生的典型1000個的錯誤消息。

回答

1

看來boost::bind不能推導出返回值類型。

試試這個:

boost::function< double (double) > fpdf = boost::bind<double>(
    boost::math::pdf< boost::math::normal, double >, nd, _1); 
+0

很不錯的。模板編譯器錯誤解碼失敗的典型案例。 – mkluwe