problème méthode template
Bonjour à tous,
J'ai un problème d'utilisation de fonction template:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include <iostream>
#include <vector>
template<const char* msg> void f()
{
std::cout << msg << std::endl;
}
template<int msg> void g()
{
std::cout << msg << std::endl;
}
int main()
{
const int i=10;
g<0>();
g<i>();
const char* toto = "Toto";
f<toto>();
f<"Toto">();
return 0;
} |
Je ne comprend pas bien pourquoi g<0>() et g<i>() compilent alors que f<toto>() me renvoie:
Citation:
error C2971: 'f' : paramètre de modèle 'msg' : 'toto' : une variable locale ne peut pas être utilisée comme argument sans type
et que f<"Toto">() me renvoie
Citation:
error C2762: 'f' : expression non valide comme argument de modèle pour 'msg'
PS: j'utilise Visual2003 comme compilateur