gcc and template
Oliver Kullmann
O.Kullmann@Swansea.ac.uk
Sat Nov 22 17:21:00 GMT 2003
> Thank you for your reply.
> I have modify the program in the following way:
>
> #include <vector>
> using namespace std;
>
> template <class T>void my_fun2();
>
> template <class T> void
> my_fun1(){
> my_fun2<T>();
> };
>
> template <class T> void
> my_fun2(){
> T prova=1234;
> };
>
> int main()
> {
> my_fun1<float>();
> return 0;
> };
>
> But now the compiler tell me that there is an error in my_fun2.
> Please help me.
>
>
the code above should be correct (and compiles with g++).
(BTW: Please don't say "there is an error ...", but give **details**!!
Just copy the error message.
And perhaps better send your mail (also) to the list so that other people
can participate and/or learn from it.)
Oliver
>
>
>
> >-- Messaggio Originale --
> >Date: Sat, 22 Nov 2003 13:44:42 +0000
> >From: Oliver Kullmann <O.Kullmann@Swansea.ac.uk>
> >To: codaditasso@tiscali.it
> >Subject: Re: gcc and template
> >
> >
> >>
> > Hello
> > I've tried to compile the following program with gcc:
> >
> > 1 template <class T> void
> > 2 my_fun1(){
> > 3 my_fun2<T>();
> > 4 };
> > 5
> > 6 template <class T> void
> > 7 my_fun2(){
> > 8 T prova=1234;
> > 9 };
> > 10
> > 11 int ma
> >n()
> > 12 {
> > 13 my_fun1<float>();
> > 14
> > 15 return 0;
> > 16 }
> >
> > but the compiler tell me that there is syntax error before > in line 3.
> > Anyway with the c++ builder the program was compiled correctly. What's
> the
> > problem? Also with t
> >e mingw I've obtained the same compile error?
> > In the gcc are not possible to call a template function with in another?
> >
> >
> > Greetings from pinzi
> >
>
> Hi,
>
> at line 3 you are using a non-dependent name ("my_fun2"), and non-dependent
> names
> >n template definitions are looked up immediately (while dependent
> names are looked up at the point of instantiation).
>
> So you need to declare my_fun2 before the definition of the function template
> my_fun1:
>
> template <class T>
> void my_fun2();
>
>
> > 1 template <class T> void
> > 2 my_fun1(){
> > 3 my_fun2<T>();
>
> ...
>
> Oliver
>
> Oliver
>
>
>
>
>
> __________________________________________________________________
> Tiscali ADSL SENZA CANONE, paghi solo quando navighi!
> E in più il modem e' GRATIS! Abbonati subito.
> http://point.tiscali.it/adsl/index.shtml
>
>
>
>
More information about the Gcc-help
mailing list