This is the mail archive of the gcc-prs@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]

Re: c++/6785


The following reply was made to PR c++/6785; it has been noted by GNATS.

From: Wolfgang Bangerth <bangerth@ices.utexas.edu>
To: gcc-bugs@gcc.gnu.org, <gcc-gnats@gcc.gnu.org>, <nathan@codesourcery.com>
Cc:  
Subject: Re: c++/6785
Date: Tue, 13 May 2003 19:55:39 -0500 (CDT)

 This doesn't ICE any more with mainline, but with James's smaller 
 testcase,
 ----------------------
 #include <cstddef>
 template< typename T, size_t N >
 size_t
 size( T (&a)[ N ] )
 {
   return N ;
 }
  
 void
 f()
 {
   static char const   s[] = "abc" ;
   int                 buf[ size( s ) ] ;
   size_t              r = size( buf ) ;
 }
 ----------------------
 I now get:
 
 g/x> /home/bangerth/bin/gcc-3.4-pre/bin/c++ -c x.cc
 x.cc: In function `void f()':
 x.cc:14: error: no matching function for call to `size(int[size(T (&)[N]) 
 [with
    T = const char, unsigned int N = 4]((&s))])'
 
 
 I think, it's warranted that gcc doesn't find a match, since "buf" is 
 dynamically sized (there are other duplicates of this problem). It's 
 funny, though, that gcc is able nevertheless to figure out the size of the 
 array, and the error message of course is not very helpful:
 - it says that there's no match, even gives the template args, where there
   of course is one.
 - the placing of the template args is wrong in the message.
 
 Nathan, can you say anything about the legality of this at least?
 
 W.
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:            bangerth@ices.utexas.edu
                                www: http://www.ices.utexas.edu/~bangerth/
 
 


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