在GCC 3.3下使用operator()进行编译

时间:2009-02-23 02:00:19

标签: c++ gcc boost random

我有以下代码段:

#include <boost/random/lognormal_distribution.hpp>
#include <boost/random/lagged_fibonacci.hpp> 

int main() {

  const double mean  = 0.0;
  const double sigma = 1.0;

  boost::lognormal_distribution<double> lognorm_dist(mean, sigma);
  boost::lagged_fibonacci44497 engine;

  // the following line give error in GCC 3.3
  const double value = lognorm_dist.operator() <boost::lagged_fibonacci44497>((engine)); 

}

下编译正常
i686-apple-darwin9-g++-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465)

但是在:

g++ (GCC) 3.3.3 (SuSE Linux)

它出现以下错误:

Mycode.cc:10:error: `operator()' not defined

我该如何解决问题?

1 个答案:

答案 0 :(得分:2)

为什么不只是lognorm_dist( engine );?提供“类似函数”的语法是operator()的重点。也就是说,如果我没有弄错的话,lognorm_dist.template operator() <boost::lagged_fibonacci44497>((engine))应解决你的编译问题。