Компиляция с оператором () в GCC 3.3 Проблема в Boost - PullRequest
0 голосов
/ 23 февраля 2009

У меня есть следующий фрагмент:

#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 Ответ

2 голосов
/ 23 февраля 2009

Почему не просто lognorm_dist( engine );? Предоставление "подобного функции" синтаксиса - это весь смысл оператора (). Тем не менее, lognorm_dist.template operator() <boost::lagged_fibonacci44497>((engine)) должно решить ваши проблемы с компиляцией, если я не ошибаюсь.

...