This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/21808] New: Uninformative diagnostic for name lookup from template function
- From: "veksler at il dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 May 2005 15:36:15 -0000
- Subject: [Bug c++/21808] New: Uninformative diagnostic for name lookup from template function
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Template code that used to work prior to gcc-3.4
fails in very uninformative ways. Diagnostic should
be improved.
For example:
$ cat t.cpp
template <class T> struct A { T t; };
// Swap following 2 functions to get conforming C++
template <class T> void foo(const A<T>& data)
{
foo((int)data.t);
}
void foo(int data);
$ g++ t2.cpp
t2.cpp: In function `void foo(const A<T>&)':
t2.cpp:5: error: no matching function for call to `foo(int&)'
As an exaple for a good diagnostic:
int f()
{
for (int i=0 ; i < 4 ; ++i)
{}
return i;
}
t4.cpp: In function `int f()':
t4.cpp:5: name lookup of `i' changed for new ISO `for' scoping
t4.cpp:3: using obsolete binding at `i'
It would be nice to have something like:
t2.cpp: In function `void foo(const A<T>&)':
t2.cpp:5: error: name lookup of `foo(int&)' changed for new ISO `template'
functions.
t2.cpp:9: error: using not dependent `foo(int)' is no longer supported.
--
Summary: Uninformative diagnostic for name lookup from template
function
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: veksler at il dot ibm dot com
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21808