This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/16246] [3.3/3.4/3.5 regression] Incorrect template argument deduction


------- Additional Comments From bangerth at dealii dot org  2004-06-28 17:09 -------
Confirmed indeed. This is a rather peculiar failure: 
---------------- 
template <typename T> void foo (T, T); 
 
template <unsigned N, unsigned M>  
int bar( const char(&val)[M] ) 
{ 
  foo (N,M); 
} 
 
int i = bar<10>("1234"); 
---------------- 
 
g/x> /home/bangerth/bin/gcc-3.4-pre/bin/c++ -c x.cc 
x.cc: In function `int bar(const char (&)[M]) [with unsigned int N = 10u, 
unsigned int M = 5]': 
x.cc:9:   instantiated from here 
x.cc:6: error: no matching function for call to `foo(unsigned int, int)' 
 
Note that both N and M are declared to be of type unsigned. However, only 
N is explicitly specified and M is deduced. From the error message, we 
see that M is assumed to be unsigned, but the value given in the template 
parameter list doesn't have the 'u' suffix, so it looks like as if gcc 
knows that the type is unsigned, but that the node in which the actual 
value is stored is a signed integer. This mismatch then causes the failure 
of not finding an instance of foo(). 
 
This used to work in 2.95, so is a regression. 
 
W. 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|3.4.0 3.3.3 3.2.3 3.0.4     |3.4.0 3.3.3 3.2.3 3.0.4
                   |2.95.3                      |
      Known to work|                            |2.95.3
            Summary|Incorrect template argument |[3.3/3.4/3.5 regression]
                   |deduction                   |Incorrect template argument
                   |                            |deduction
   Target Milestone|---                         |3.4.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16246


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]