------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-09 02:39 ------- Confirmed, reduced testcase: #define MAX(a,b) ((a) > (b) ? (a) : (b)) template<int W, bool S> class mc_int { template<int W2, bool S2> mc_int<MAX(W+(S2&&!S),W2+(S&&!S2))+1, false> operator +(const mc_int<W2,S2>& x) const; }; typedef mc_int<6,false> ch_t; template <int footemplate> void foo_function(ch_t A, ch_t B, ch_t *C) { A + B; }
Note changing foo_function to a non template, makes this work. This is caused by not folding in templates. -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1 GCC build triplet|gcc version 4.0.1 | GCC host triplet|i686-pc-linux-gnu | GCC target triplet|i686-pc-linux-gnu | Known to work| |3.3.3 Last reconfirmed|0000-00-00 00:00:00 |2005-09-09 02:39:23 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23789