déclaration de template dans un header
bonjour à tous, dans le cours de c++ moderne sur Zeste de savoir, la partie sur la programmation modulaire explique qu'il faut déclarer les templates comme ceci:
conteneur_impl.tpp:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// Implémentation des fonctions templates.
template <typename Collection>
void afficher(Collection const & iterable)
{
for (auto const & e : iterable)
{
std::cout << e << std::endl;
}
} |
conteneur.hpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #ifndef CONTENEUR_HPP
#define CONTENEUR_HPP
#include <iostream>
template <typename Collection>
void afficher(Collection const & iterable);
// A la fin, on rajoute le fichier d'implémentation.
#include "conteneur_impl.tpp"
#endif |
et le main.cpp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream>
#include <vector>
// Le fichier d'implémentation est lui aussi inclut, du coup.
#include "conteneur.hpp"
int main()
{
std::vector<int> const tableau { 1, 2, 3, 4 };
afficher(tableau);
return 0;
} |
est-ce que la déclaration du prototype du template dans conteneur.hpp n'est pas inutile?