------- Additional Comments From max656 at hotmail dot com  2005-01-01 01:37 
-------
Subject: RE:  friend funtion inside a template class seems to have a probl

Hi lerdsuwa

You came up with an interesting topic - class template specializtion.
I didn't know aboou it. I   need further research on that.

As you mentioned, the keyword "typename' is added and compiled and then it 
works fine.
Thanks a lot for your detailed explanation.
It haunted me a lot. I was completely stuck for a while even though I found 
some other ways.

Tyson

>From: "lerdsuwa at gcc dot gnu dot org" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: [EMAIL PROTECTED]
>Subject: [Bug c++/19188] friend funtion inside a template class seems to 
>have a problem
>Date: 31 Dec 2004 13:23:03 -0000
>
>------- Additional Comments From lerdsuwa at gcc dot gnu dot org  
>2004-12-31 13:23 -------
>The 'typename' keyword is required because later C++ introduces a lot more
>features.  Those that interfere with your code are partial specialization
>and specialization.  For example, you can now have specialization
>
>   template <> class tstack<bool> {
>     int link;
>     ...
>   };
>
>Then when you declare
>
>   tstack<bool> t;
>
>it will use the above declaration, where 'link' is now a member data
>instead of a nested class.  So the code
>
>   tstack<T>::link* p;
>
>which could be interpreted as declaring a variable which is a pointer to 
>type
>'tstack<T>::link' if 'T' is 'int'.  But when 'T' is 'bool' it could means
>multiplying a member data with another variable named 'p'.
>
>To resolve the ambiguity, later C++ requires the 'typename' keyword to
>treat as pointer declaration, otherwise it will be treated as 
>muliplication.
>Older C++ books don't have this 'typename' keyword but newer good books
>from respected authors coming out in the last few years should.
>(Many new C++ books are still wrong).
>
>I know the parser error message could be improved, and there are plenty of
>bug reports elsewhere about it.
>
>--
>
>
>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19188
>
>------- You are receiving this mail because: -------
>You reported the bug, or are watching the reporter.




-- 


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

Reply via email to