This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/34893] New: Strangeness of name lookup in template function
- From: "rvovsd at mail dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Jan 2008 22:19:12 -0000
- Subject: [Bug c++/34893] New: Strangeness of name lookup in template function
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
On compiling that code:
--- begin code ---
class Y {};
void f(Y*) { } // line 3. If comment - all ok
template < typename T>
void sel(T* a) { f(a); } //line 6
void f(void*) {}
int main(int argc, char **argv)
{
sel((void*)0); //line 12
}
--- end code ---
Àppears error:
../main.cpp: In function ?void sel(T*) [with T = void]?:
../main.cpp:12: instantiated from here
../main.cpp:6: error: invalid conversion from ?void*? to ?Y*?
../main.cpp:6: error: initializing argument 1 of ?void f(Y*)?
If comment line 3, then work.
Also work, if line 3 move after line 6.
If functions f(Y*), f(void*) and sel(T*) placed in different header files, then
arise dependency on order including headers.
--
Summary: Strangeness of name lookup in template function
Product: gcc
Version: 4.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rvovsd at mail dot ru
GCC host triplet: openSuse 10.3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34893