c++/6785
Wolfgang Bangerth
bangerth@ices.utexas.edu
Wed May 14 06:16:00 GMT 2003
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/
More information about the Gcc-bugs
mailing list