g++ 2.95.2 parse error taking address of a template function

Martin Sebor marts@att.net
Sun Apr 23 20:03:00 GMT 2000


Hi,

g++ 2.95.2 gives a parse error when taking the address of a template
function.

Thanks
Martin


$ cat test.cpp

template <class T>
void foo ()
{
    void (*pf)() = &bar<T>;
}

template <class T>
void bar () { }


$ g++ -v test.cpp
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cpp -lang-c++ -v
-D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__
-Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__
-D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Acpu(i386)
-Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686
-D__i686__ -D__pentiumpro -D__pentiumpro__ test.cpp /tmp/ccjWwbmb.ii
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:

/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
 /usr/local/include

/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../i686-pc-linux-gnu/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search
path:
End of omitted list.
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus
/tmp/ccjWwbmb.ii -quiet -dumpbase test.cc -version -o /tmp/cce5Gspm.s
GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnu) compiled
by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release).
test.cpp: In function `void foo()':
test.cpp:6: parse error before `>'




More information about the Gcc-bugs mailing list