------- Additional Comments From andres_takach at mentor dot com 2005-09-09 02:37 ------- t.ii file:
# 1 "t.cxx" # 1 "<built-in>" # 1 "<command line>" # 1 "t.cxx" template<int W, bool S> class mc_int { public: int d; mc_int() { d = 0; } mc_int(int x) { d = x; } mc_int(const mc_int &x) { d = x.d; } template<int W2, bool S2> mc_int<((W+(S2&&!S)) > (W2+(S&&!S2)) ? (W+(S2&&!S)) : (W2+(S&&!S2)))+1, (S||S2)> operator +(const mc_int<W2,S2> & x) const { return 0; } }; typedef mc_int<6,false> ch_t; template <int footemplate> void foo_function(ch_t A, ch_t B, ch_t *C) { A + B; } int main() { ch_t fooA, fooB, fooC, fooD, fooE; fooA= (ch_t) 5; fooB= (ch_t) 15; ch_t CC; foo_function<0>(fooA, fooB, &CC); } --------------------------------------------------------------------- Output generated with "c++ -v -save-temps t.cxx": Using built-in specs. Target: i686-pc-linux-gnu Configured with: /user/jasong/hdl/sb/sim/dcs_gcc/ixl/build/src/gcc-4.0.1/configure --prefix=/user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1 --enable-languages=c,c++ Thread model: posix gcc version 4.0.1 (Mentor-DCS) /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/libexec/gcc/i686-pc-linux-gnu/4.0.1/cc1plus -E -quiet -v -D_GNU_SOURCE t.cxx -mtune=pentiumpro -fpch-preprocess -o t.ii ignoring nonexistent directory "/user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../include/c++/4.0.1 /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../include/c++/4.0.1/i686-pc-linux-gnu /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/lib/gcc/i686-pc-linux-gnu/4.0.1/../../../../include/c++/4.0.1/backward /usr/local/include /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/include /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/lib/gcc/i686-pc-linux-gnu/4.0.1/include /usr/include End of search list. /user/jasong/hdl/sb/sim/dcs_gcc/ixl/exports/mgc_home/pkgs/dcs_gcc.ixl/gcc-4.0.1/libexec/gcc/i686-pc-linux-gnu/4.0.1/cc1plus -fpreprocessed t.ii -quiet -dumpbase t.cxx -mtune=pentiumpro -auxbase t -version -o t.s GNU C++ version 4.0.1 (Mentor-DCS) (i686-pc-linux-gnu) compiled by GNU C version 3.4.3 (Mentor-DCS). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 t.cxx: In function void foo_function(ch_t, ch_t, ch_t*): t.cxx:20: error: (((int)false) + 7) is not a valid template argument for type int because it is a non-constant expression t.cxx:20: error: no match for operator+ in A + B -- What |Removed |Added ---------------------------------------------------------------------------- Known to work|3.3.3 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23789