Perché questo C++ non è valido?Perché non è possibile dichiarare un tipo con contenitore modello e valore contenuto modello?
template <typename Container, typename T>
bool
foo (const Container <T> &);
g ++ mi dà Container is not a template
che non è chiaramente che cosa significa veramente.
Cercando template <typename Container> template <typename T>
non funziona neanche, neppure const typename Container <T> &
Sembra ragionevole a me che uno vorrebbe definire un'interfaccia che è generico su sia il contenitore e il tipo di contenuto.
Quindi,
- in termini di standard, perché non è questo permesso?
- in termini di standard di progettazione, perché questo non dovrebbe essere consentito, potrebbe causare problemi?
- c'è una soluzione alternativa in C++ 14, oltre a basare l'interfaccia su iteratori?
Perché non puoi semplicemente usare il Container e liberarti della T? –
Perché dovrebbe funzionare? Non puoi passare a 'std :: vector' devi passare un' std :: vector '. Se lo fai, allora stai chiedendo al compilatore di fare 'std :: vector ' che non ha senso. –
NathanOliver
Il fatto è che stai dicendo al tuo compilatore che i tuoi 2 parametri generici sono tipi sebbene Container non sia un tipo purché non abbia un proprio parametro generico. – Loomchild