Bonjour à tous,

J'ai un problème d'utilisation de fonction template:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
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
error C2762: 'f' : expression non valide comme argument de modèle pour 'msg'
PS: j'utilise Visual2003 comme compilateur