[Bug c++/37232] New: gcc can't find function, called from template function

roman dot desyatov at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Aug 25 11:23:00 GMT 2008


When compiling code below, complier says it can't find suitable function:
---------------------------------------------
void F( int* ){}
void F( float* ){}

template <class T>
void G( T * v)
{
   F(v);
}

void F( double* ){}
int main(int, char**)
{
 double a = 3.14;
 G(&a);

 return 0;
}
----------------------------------------------------------------------

When I rearrange functions in this order: 

void F( int* ){}
void F( float* ){}
void F( double* ){}
template <class T> void G( T * v) { F(v); }

or in this order:

template <class T> void G( T * v) { F(v); }
void F( int* ){}
void F( float* ){}
void F( double* ){}

then all is OK. Only if put G beetween F, then compiler can't see all that
below G.


System information: (gcc -v) and build command:
-----------------------------------------------
Reading specs from /usr/lib64/gcc/x86_64-slamd64-linux/4.1.2/specs
Target: x86_64-slamd64-linux
Configured with: ../gcc-4.1.2/configure --prefix=/usr --libdir=/usr/lib64
--enable-shared --enable-languages=ada,c,c++,fortran,java,objc
--enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld
--verbose --target=x86_64-slamd64-linux --host=x86_64-slamd64-linux
Thread model: posix
gcc version 4.1.2

g++ -c -pipe -save-temps -Wall -W -g -o test1.o test1.cpp

g++: warning: -pipe ignored because -save-temps specified
test1.cpp: In function 'void G(T*) [with T = double]':
test1.cpp:22:   instantiated from here
test1.cpp:12: error: no matching function for call to 'F(double*&)'
test1.cpp:1: note: candidates are: void F(int*)
test1.cpp:5: note:                 void F(float*)


-- 
           Summary: gcc can't find function, called from template function
           Product: gcc
           Version: 4.1.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: roman dot desyatov at gmail dot com
 GCC build triplet: x86_64-slamd64-linux
  GCC host triplet: x86_64-slamd64-linux
GCC target triplet: x86_64-slamd64-linux


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



More information about the Gcc-bugs mailing list