#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
e utilizzato quella funzione nel mio principale. Ottengo errori Certo, so che ci sono più parametri di template per std::list
(allocator, penso). Ma questo è oltre il punto. Devo conoscere la dichiarazione completa del template di una classe template per poterla inoltrare dichiararla?Come inoltrare la dichiarazione di una classe template nello spazio dei nomi std?
MODIFICA: Non stavo usando un puntatore prima - era un riferimento. Lo proverò con il puntatore.
E nel caso di elenco, il secondo parametro è un parametro predefinito che è 'std :: allocator' –
nakiya
uno potrebbe considerare una svista che il STL non contiene intestazioni di dichiarazione in avanti. D'altra parte, i suoi file sono così spesso inclusi che probabilmente non produrranno alcun beneficio sul tempo di compilazione ... –
'__TEST__' è un identificatore riservato, [non utilizzarlo] (http://stackoverflow.com/domande/228.783/cosa-sono-le-regole-about-utilizzando-an-sottolineatura-in-ac-identifier). – GManNickG