我有以下代码段:
#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
我该如何解决问题?
答案 0 :(得分:2)
为什么不只是lognorm_dist( engine );
?提供“类似函数”的语法是operator()的重点。也就是说,如果我没有弄错的话,lognorm_dist.template operator() <boost::lagged_fibonacci44497>((engine))
应解决你的编译问题。