Bug in g++ version 2.95.2
Maurizio Loreti
loreti@pd.infn.it
Mon Jun 12 01:56:00 GMT 2000
Hello -
I have a simple C++ program (included below) that complies and links
correctly with "g++ -o foo foo.cxx"; adding a -ansi to the command line
(i.e. using "g++ -ansi -o foo foo.cxx") causes an error (i.e. g++ cannot
find lrand48):
MLO@mlinux 86 $ g++ -ansi -o foo foo.cxx
/usr/soft/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3/stl_algo.h: In function `int __random_number<int>(int)':
/usr/soft/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3/stl_algo.h:852: instantiated from `random_shuffle<int *>(int *, int *)'
foo.cxx:17: instantiated from here
/usr/soft/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3/stl_algo.h:841: `lrand48' undeclared (first use this function)
/usr/soft/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3/stl_algo.h:841: (Each undeclared identifier is reported only once
/usr/soft/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3/stl_algo.h:841: for each function it appears in.)
g++ version: 2.95.2
machine and OS: i686-pc-linux-gnu, linux kernel 2.2.12-20 (RedHat 6.1)
gcc/g++ configured with: ./configure i686-pc-linux-gnu --prefix=/usr/soft
File that compiles/links correctly without -ansi, and that does not with
-ansi:
#include <iostream>
#include <vector>
#include <algorithm>
class conta {
int n;
public:
conta(const int first=0) throw() : n(first) {};
int operator() () throw() { return n++; };
};
int main() {
const int nCarte = 40;
std::vector<int> mazzo(nCarte);
std::generate_n(mazzo.begin(), nCarte, conta(1));
std::random_shuffle(mazzo.begin(), mazzo.end());
std::copy(mazzo.begin(), mazzo.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
--
Maurizio Loreti http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy loreti@pd.infn.it
More information about the Gcc-bugs
mailing list