BZDEV: blitz and gcc-3.0.x

From: John Hunter (jdhunter@ace.bsd.uchicago.edu)
Date: Thu Jan 24 2002 - 13:16:12 EST


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