Comme le titre l'indique, je souhaite spécialiser un modèle de fonction pour les pointeurs de chaîne et de caractère, jusqu'à présent j'ai fait this mais je n'arrive pas à déterminer les paramètres de chaîne par référence .Modèle de fonction spécialisée pour std :: string et char *
#include <iostream>
#include <string.h>
template<typename T> void xxx(T param)
{
std::cout << "General : "<< sizeof(T) << std::endl;
}
template<> void xxx<char*>(char* param)
{
std::cout << "Char ptr: "<< strlen(param) << std::endl;
}
template<> void xxx<const char* >(const char* param)
{
std::cout << "Const Char ptr : "<< strlen(param)<< std::endl;
}
template<> void xxx<const std::string & >(const std::string & param)
{
std::cout << "Const String : "<< param.size()<< std::endl;
}
template<> void xxx<std::string >(std::string param)
{
std::cout << "String : "<< param.size()<< std::endl;
}
int main()
{
xxx("word");
std::string aword("word");
xxx(aword);
std::string const cword("const word");
xxx(cword);
}
Aussi template<> void xxx<const std::string & >(const std::string & param)
chose ne fonctionne tout simplement pas.
Si je réarrangées le modèle opriginal d'accepter les paramètres comme T&
alors le char *
doit être char * &
qui est pas bon pour le texte statique dans le code.
Aidez s'il vous plaît!
Maintenant, il ne compile pas! Vous devez mettre '' en arrière, pour 'strlen'. –
TonyK