WebSneak Webmaster Forums

home FAQ Members List search Quick Links

Go Back WebSneak Webmaster Forums » WebSneak MarketPlace » Services » Programming » Forward Declarations and Templates  

Programming Place to look for programmers to complete your projects.

Reply
 

 

LinkBack Thread Tools Display Modes  
Old 12-26-2007, 12:13 AM   #1 (permalink)
Junior Member
 
Join Date: Dec 2007
Posts: 3
arion is on a distinguished road
Arrow Forward Declarations and Templates

It is illegal to use forward declarations with typedef names, as in:
class string;
void f(string& s); //illegal, string is a typedef name
Even a typename won't do here:
typename std::string; //still illegal
void f(std::string& s);
The problem with these forward declarations is that std::string is not a class, but a typedef name defined like this:
typedef basic_string<char, char_traits<char>, allocator<char> >string;
In order to generate the correct mangled name for the function f, the compiler has to see the non-typedef'd form of its argument. In other words, there is no escape from #including the header <string> in this case.
arion is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump