next up previous contents
Next: 2.5 Debugging information Up: 2 Compiling And Running Previous: 2.3 Compiling Templates

2.4 G++ 2.7.2

The library can also be compiled with G++ 2.7.2, using the same options as for G++ 2.6.3. Due to some changes in the C++ language standard, the compilation produces lots of warnings, but correct code is produced.

The first change is to the scope of variables declared inside a for loop. Most of our code has been adapted to use syntax that works with both the old and new rules. We use the -fno-for-scope option to allow the old syntax in places where it hasn't been fixed. Eventually, we will convert all such loops, but until most compilers use the new scoping, we want to allow the use of older compilers.

The second change is to prohibit passing an rvalue as a non-const reference parameter. We often re-use parts of Relations in relational operators, which destroys them; to avoid this destruction when passing a relation, we use a copy function. Unfortunately, this results in a warning, since the result of copy is an rvalue. We hope to address this problem in a future release.

Other C++ compilers

Please let us know if you succeed in getting our code to compile with something other than g++.



omega@cs.umd.edu