c++ - How to forward declare a template class in namespace std? -


#ifndef __test__ #define __test__  namespace std {     template<typename t>     class list; }  template<typename t> void pop(std::list<t> * l) {     while(!l->empty())         l->pop(); }  #endif 

and used function in main. errors. of course, know there more template params std::list (allocator think). but, beside point. have know full template declaration of template class able forward declare it?

edit: wasn't using pointer before - reference. i'll try out pointer.

the problem not can't forward-declare template class. yes, need know of template parameters and defaults able forward-declare correctly:

namespace std {   template<class t, class allocator = std::allocator<t>>   class list; } 

but make such forward declaration in namespace std explicitly prohibited standard: only thing you're allowed put in std template specialisation, commonly std::less on user-defined type. else can cite relevant text if necessary.

just #include <list> , don't worry it.

oh, incidentally, name containing double-underscores reserved use implementation, should use test_h instead of __test__. it's not going generate warning or error, if program has clash implementation-defined identifier, it's not guaranteed compile or run correctly: it's ill-formed. prohibited names beginning underscore followed capital letter, among others. in general, don't start things underscores unless know magic you're dealing with.


Comments

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -