In response to a request, here are the errors produced by egcs-1.0.3a/pgcc-2.91.51 when compiling Lilypond-1.0.0. I've fixed them for my system, but I'm not at all sure if my changes are 'good' C++. Here are the problems. first: rm -f out/interval.dep; DEPENDENCIES_OUTPUT="out/interval.dep out/interval.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion interval.cc -o out/interval.o interval.cc:18: specialization of Interval_t<double>::infinity<Real>() after instantiation interval.cc:24: specialization of Interval_t<double>::T_to_str<Real>(double) after instantiation interval.cc:32: specialization of Interval_t<int>::infinity<int>() after instantiation interval.cc:38: specialization of Interval_t<int>::T_to_str<int>(int) after instantiation make[1]: *** [out/interval.o] Error 1 make[1]: Leaving directory `/usr/src/lilypond-1.0.0/flower' make: *** [all] Error 2 second: rm -f out/binary-source-file.dep; DEPENDENCIES_OUTPUT="out/binary-source-file.dep out/binary-source-file.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion -D_REENTRANT binary-source-file.cc -o out/binary-source-file.o rm -f out/duration-convert.dep; DEPENDENCIES_OUTPUT="out/duration-convert.dep out/duration-convert.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion -D_REENTRANT duration-convert.cc -o out/duration-convert.o In file included from include/duration.hh:16, from include/duration-convert.hh:12, from duration-convert.cc:10: include/moment.hh:21: warning: ANSI C++ forbids declaration `infinity_mom' with no type duration-convert.cc:15: duplicate initialization of Duration_convert::midi_as_plet_b_s make[1]: *** [out/duration-convert.o] Error 1 make[1]: Leaving directory `/usr/src/lilypond-1.0.0/lib' make: *** [all] Error 2 third: rm -f out/abbrev.dep; DEPENDENCIES_OUTPUT="out/abbrev.dep out/abbrev.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion abbrev.cc -o out/abbrev.o In file included from include/drul-array.hh:13, from include/item.hh:15, from include/abbrev.hh:13, from abbrev.cc:10: include/direction.hh:39: warning: ANSI C++ forbids declaration `' with no type include/direction.hh:39: abstract declarator `int' used as declaration include/direction.hh:39: template declaration of `int ._10' In file included from include/paper-def.hh:16, from abbrev.cc:13: ../lib/include/moment.hh:21: warning: ANSI C++ forbids declaration `infinity_mom' with no type abbrev.cc: In method `struct Molecule * Abbreviation::brew_molecule_p() const': abbrev.cc:36: warning: unused variable `Real interline_f' make[1]: *** [out/abbrev.o] Error 1 make[1]: Leaving directory `/usr/src/lilypond-1.0.0/lily' make: *** [all] Error 2 fourth: rm -f out/template5.dep; DEPENDENCIES_OUTPUT="out/template5.dep out/template5.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion template5.cc -o out/template5.o In file included from template5.cc:12: ../lib/include/moment.hh:21: warning: ANSI C++ forbids declaration `infinity_mom' with no type template5.cc:23: specialization of Interval_t<Rational>::infinity<Rational>() after instantiation template5.cc:31: specialization of Interval_t<Rational>::T_to_str<Rational>(Rational) after instantiation make[1]: *** [out/template5.o] Error 1 make[1]: Leaving directory `/usr/src/lilypond-1.0.0/lily' make: *** [all] Error 2 fifth: rm -f out/mudela-item.dep; DEPENDENCIES_OUTPUT="out/mudela-item.dep out/mudela-item.o" c++ -c -DHAVE_CONFIG_H -g -Iinclude -Iout -I../lib/include -I../lib/out -I../flower/include -I../flower/out -g -O -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion mudela-item.cc -o out/mudela-item.o In file included from ../lib/include/duration.hh:16, from ../lib/include/duration-convert.hh:12, from mudela-item.cc:9: ../lib/include/moment.hh:21: warning: ANSI C++ forbids declaration `infinity_mom' with no type In file included from mudela-item.cc:11: include/mudela-item.hh:78: warning: ANSI C++ forbids initialization of const member `c0_pitch_i_c_' include/mudela-item.hh:78: warning: making `c0_pitch_i_c_' static mudela-item.cc:156: duplicate initialization of Mudela_note::simple_plet_b_s make[1]: *** [out/mudela-item.o] Error 1 make[1]: Leaving directory `/usr/src/lilypond-1.0.0/mi2mu' make: *** [all] Error 2 OK, that's it. I've tweaked my version to get around these problems, but the modifications are probably terrible C++. I hope this helps somebody. Yours, John Hayward-Warburton