I am trying to compile a test application using blitz-20001213 under
gcc-3.0.2 but am getting some compile errors in mt.h. Has anyone
gotten this working under the latest versions of gcc. If so, please
suggest changes.
The example compiled fine under gcc-2.95.2. gcc-3.0.x introduced a
number of changes to increase standards compliance; is this the source
of my troubles?
Example code:
#include <random/uniform.h>
#include <random/normal.h>
#include <time.h>
#include <iostream>
#include <fstream>
using namespace ranlib;
using namespace std;
int main()
{
ofstream os("random.dat");
Uniform<float> x;
Normal<float> y(0.0, 1.0);
x.seed((unsigned int)time(0)); //note; no need to seed y
cout << "How many random numbers?" << endl;
int N;
cin >> N;
for (int i = 0; i < N; ++i)
os << x.random() << " " << y.random() << endl;
}
Compiler error:
cd /home/jdhunter/c/examples/blitz/
g++ -I ~/c/src/blitz-20001213 random.cpp
In file included from /home/jdhunter/c/src/blitz-20001213/random/default.h:4,
from /home/jdhunter/c/src/blitz-20001213/random/uniform.h:4,
from random.cpp:2:
/home/jdhunter/c/src/blitz-20001213/random/mt.h: In member function `void
ranlib::MersenneTwister::initialize()':
/home/jdhunter/c/src/blitz-20001213/random/mt.h:98: no match for
`std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >& = unsigned int*' operator
/usr/local/include/g++-v3/bits/stl_iterator.h:453: candidates are:
std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >& std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >::operator=(const
std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >&)
/home/jdhunter/c/src/blitz-20001213/random/mt.h: In member function `void
ranlib::MersenneTwister::seed(unsigned int)':
/home/jdhunter/c/src/blitz-20001213/random/mt.h:135: conversion from `unsigned
int*' to non-scalar type `std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >' requested
/home/jdhunter/c/src/blitz-20001213/random/mt.h: In member function `void
ranlib::MersenneTwister::reload()':
/home/jdhunter/c/src/blitz-20001213/random/mt.h:153: conversion from `unsigned
int*' to non-scalar type `std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >' requested
/home/jdhunter/c/src/blitz-20001213/random/mt.h:157: conversion from `unsigned
int*' to non-scalar type `std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >' requested
/home/jdhunter/c/src/blitz-20001213/random/mt.h:160: conversion from `unsigned
int*' to non-scalar type `std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >' requested
/home/jdhunter/c/src/blitz-20001213/random/mt.h:164: no match for
`std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >& = unsigned int*' operator
/usr/local/include/g++-v3/bits/stl_iterator.h:453: candidates are:
std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >& std::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >::operator=(const
std::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >&)
Compilation exited abnormally with code 1 at Thu Jan 24 12:13:51
--------------------- blitz-dev list --------------------------------
* To subscribe/unsubscribe: use the handy web form at
http://oonumerics.org/blitz/lists.html
This archive was generated by hypermail 2b29 : Wed Feb 20 2002 - 04:30:12 EST