Connecting Tech Pros Worldwide Help | Site Map

Does the typename keyword make sense here?

  #1  
Old July 23rd, 2005, 12:30 AM
Exits Funnel
Guest
 
Posts: n/a
Hello,

I've inherited a bunch of C++ code which was developed on Windows and
I'm in the process of trying to port it to Linux/g++. The following is
similar to one very small piece of the code:

//Begin test1.cpp
template<class B>
class CHB
{ };

template <typename B>

struct BCBT
{
typedef typename CHB<B> BCB;
};
//End test1.cpp

When I try to compile the above, g++ complains thusly:

test1.cpp:9 syntax error before ';' token.

Presumably, this code compiles under MS Visual Studio 7.1. If I remove
the 'typename' from line nine, it's compilable under g++. Two questions
then:

1) Is it legal. In other words, should g++ complain?
2) If it is legal, what does it do? It's not clear to me what purpose
typname would serve in this particular context.

Thanks!

-exits

  #2  
Old July 23rd, 2005, 12:30 AM
Sharad Kala
Guest
 
Posts: n/a

re: Does the typename keyword make sense here?



"Exits Funnel" <exitsNOfunnelSPAM@yahoo.com> wrote in message[color=blue]
> Hello,
>
> When I try to compile the above, g++ complains thusly:[/color]
[snip][color=blue]
> test1.cpp:9 syntax error before ';' token.
>
> Presumably, this code compiles under MS Visual Studio 7.1. If I remove
> the 'typename' from line nine, it's compilable under g++. Two questions
> then:
>
> 1) Is it legal. In other words, should g++ complain?[/color]

No, it isn't . g++ is correct.
[color=blue]
> 2) If it is legal, what does it do? It's not clear to me what purpose
> typname would serve in this particular context.[/color]

Sharad


Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Why does string not require a new like other reference types? Ray Cassick answers 21 June 27th, 2008 09:17 PM
Const inheriting Adrian Hawryluk answers 17 March 19th, 2007 10:05 PM
Template file extension / inclusion / declaration Nomak answers 5 July 22nd, 2005 01:33 PM